Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Название

Описание

Добавление новых статей

Внимание: необходимо задать контекст до сохранения статьи.

Экземпляр контекстного класса можно передавать прямо в конструкторе сущностного класса.

Все операции с полями «Связь» типа M2M (свойствами-коллекциями внутри сущностных классов)

Контекст необходимо задать у экземпляра сущностного класса перед обращением к его полю «Связь» типа M2M

Использование дополнительных свойств полей-изображений

Контекст необходимо задать у экземпляра сущностного класса перед обращением к дополнительному полю


EventsArticle event = new EventsArticle(context);

var item = ctx. TestArticles. Where(n => n. Id == 3737).Single();

var newCat = ctx. TestCategoryArticles. Where(n => n. Id == 1856).Single();

item. InternalDataContext = ctx;

item. Categories. Add(newCat);

bmitChanges();

Если необходимо применение контекста сразу для коллекции объектов, то возможно использование метода, расширяющего IEnumerable<T> (ApplyContext(DataContext context)), определённого для каждого сущностного класса.

foreach (var item in ctx. PhotosArticles. Where(n => n. Photo!= null).ApplyContext(ctx))
{
  // use item. PhotoUrl;
}

Использование XmlMappingSource

Источник данных для отображения обычно получают с помощью статического метода XmlMappingSource. FromXml, в который передается строка с XML-содержимым отображения. Само XML-содержимое можно получить с помощью одного из экземплярных методов класса DBConnector:

    GetMapFileContents, GetDefaultMapFileContents.

Пример:

НЕ нашли? Не то? Что вы ищете?

XmlMappingSource map = XmlMappingSource. FromXml(Cnn. GetDefaultMapFileContents(Cnn. GetSiteId("Sandbox Net")));
XmlMappingSource map2 = XmlMappingSource. FromXml(Cnn. GetMapFileContents(Cnn. GetSiteId("Sandbox Net"), "EventsDataContext. map"));

Статические свойства контекстного класса

Статические свойства позволяют настроить значения по умолчанию, которые потом будут использованы при инстанцировании контекстных классов, в том числе и для LinqHelper. Context перед первым обращением к нему.

Свойство DefaultConnectionString

Строка подключения к БД. Инициализируется строкой из раздела connectionStrings конфигурационного файла веб-сайта (web. config). Если значение не задано, то используется значение по умолчанию (qp_database).

Свойство DefaultSiteName

Имя сайта. Инициализируется именем сайта, для которого были сгенерированы классы LINQ to SQL.

Свойство DefaultXmlMappingSource

Инициализируется следующим вызовом:

XmlMappingSource. FromXml(Cnn. GetDefaultMapFileContents(Cnn. GetSiteId("Имя сайта")))

В качестве имени указывается имя сайта, для которого были сгенерированы классы LINQ to SQL.

Пример изменения статических свойств:

QPDataContext. DefaultXmlMappingSource = XmlMappingSource. FromXml(Cnn. GetDefaultMapFileContents(Cnn. GetSiteId("Sandbox Net 7")));
QPDataContext. DefaultSiteName = "Sandbox Net 7";

Использование поля «Связь» типа M2M в классах LINQ to SQL

В классах LINQ to SQL, генерируемых QP, в отличие от стандартных классов LINQ to SQL, существует поддержка «Связь» типа M2M. Они доступны в двух интерфейсах:

    поле-коллекция в сущностном классе, которая состоит из экземпляров связанного сущностного класса; класс, представляющий узловую таблицу.

Первый интерфейс обычно используется для простых выборок, добавления, удаления связанных статей. Второй интерфейс – для сложных выборок, а именно для фильтрации по полю «Связь» типа M2M на уровне SQL.

При написании LINQ-запроса с фильтрацией по полю «Связь» типа M2M на уровне SQL следует использовать следующий алгоритм:

    начать с узловой сущности, выполнить фильтрацию по одной связанной сущности, сделать проекцию по второй связанной сущности.

Пример:

IQueryable<Article> art = ctx. ArticlesCategories. Where(n => n. Category. Title == "main").Select(m => m. Article);

Поддержка стандартного поведения объекта «Publishing Container»

Фильтрация статей по умолчанию

По умолчанию фильтрация статей выполняется следующим образом:

    в Live-режиме выводятся статьи, которые:
    видимы (VISIBLE = 1, флаг управляется расписанием видимости статьи); не находятся в Архиве статей (ARCHIVE = 0); имеют максимальный статус Workflow (если STATUS_TYPE_ID = ID статуса Published текущего сайта (в большинстве Workflow) или если Workflow не назначен);
    В Stage-режиме применяются только первые два условия.

В текущей версии QP данное поведение для классов LINQ to SQL настраивается через включение опции «Использовать фильтрацию по умолчанию» в свойствах контента. При включённой опции LINQ-класс отображается не на таблицу CONTENT_NNN, а на представление CONTENT_NNN_LIVE (для Stage-режима используется аналогичное представление CONTENT_NNN_STAGE вместо CONTENT_NNN_UNITED).

Примечание: в предыдущих версиях продукта реализовывалось через вызов метода расширения ForFrontEnd(). В текущей версии метод оставлен для обратной совместимости, но в случае включённой опции никаких действий не выполняет.

Примечание: единственное отличие от объекта «Publishing Container» в том, что фильтрация по статусу всегда осуществляется по системному статусу Published. Таким образом не поддерживаются Workflow, у которых максимальный статус не равен Published.

Если генерируемые классы LINQ to SQL не используются непосредственно на веб-сайте из директории App_Code, а сначала включаются в проект в Visual Studio, то для организации работы веб-сайта в Live - и Stage-режимах целесообразно воспользоваться режимом генерации, независимым от БД (настраивается в свойствах сайта). В этом случае один и тот же код можно использовать и в Live-, и в Stage-режиме, отличие будет только в содержимом MAP-файла привязки. При такой организации кода для Stage-режима потребуется задать isLive = false в секции appSettings конфигурационного файла веб-сайта (web. config).

Примечание: для Live-режима параметр isLive должен быть либо не задан, либо равен true.

Поддержка служебных полей контента

В любом сгенерированном сущностном классе есть постоянный набор служебных полей:

Название

Тип

Описание

Id

int

Идентификатор статьи. Изменения данного поля не сохраняются в БД, значение выставляется сервером автоматически.

StatusTypeId

int

ID статуса статьи. Изменения данного поля сохраняются в БД.

StatusType

StatusType

Статус статьи. Изменения данного поля сохраняются в БД.

Visible

bool

Флаг, определяющий видимость статьи. Для возможности работы с разными значениями данного поля необходимо отключить фильтрацию по умолчанию на уровне контента. Изменения данного поля сохраняются в БД.

Archive

bool

Флаг, определяющий нахождение статьи в архиве статей. Для возможности работы с разными значениями данного поля необходимо отключить фильтрацию по умолчанию на уровне контента. Изменения данного поля сохраняются в БД.

Created

DateTime

Дата создания статьи. Изменения данного поля не сохраняются в БД, значение выставляется сервером автоматически.

Modified

DateTime

Дата последней модификации статьи. Изменения данного поля не сохраняются в БД, значение выставляется сервером автоматически.

LastModifiedBy

int

Пользователь, последним модифицировавший статью. Изменения данного поля не сохраняются в БД. Модификации статей из классов LINQ to SQL выполняются от имени пользователя по умолчанию (администратора).

Дополнительные свойства полей «Изображение» и «Динамическое изображение»

Дополнительные свойства позволяют более удобно работать с полями типа «Изображение» и «Динамическое изображение» без прямого обращения к QP8 API. Названия свойств генерируются из названия поля изображения путём добавления к ним следующих значений:

Название

Описание

*Url

Возвращает URL файла изображения.

*Path

Возвращает физический путь к файлу изображения.

Может использоваться при сохранении.

Классы LINQ to SQL и кэширование

У класса DBConnector существует обобщённый экземплярный метод GetCachedEntity.

public T GetCachedEntity<T>(string key, Func<T> fillAction)
public T GetCachedEntity<T>(string key, Func<string, T> fillAction)
public T GetCachedEntity<T>(string key, double cacheInterval, Func<T> fillAction)
public T GetCachedEntity<T>(string key, double cacheInterval, Func<string, T> fillAction)

Если требуется закэшировать коллекцию объектов, полученных с помощью LINQ to SQL, то её сначала нужно сделать вещественной с помощью любого из методов:

ToList, ToArray, ToDictionary.

Пример использования:

DBConnector cnn = new DBConnector();
List<Banner> banners = cnn. GetCachedEntity<List<Banner>>(pageAddress, 10, GetPageBanners);

В примере GetPageBanners – метод, возвращающий List<Banner>, который будет вызван только при заполнении кэша. Метод может быть определён как без параметров, так и с единственным строковым параметром. Во втором случае в метод будет передано значение ключа (параметр key).

Использование классов LINQ to SQL при создании компонентов

Под компонентами в данном случае понимаются небольшие обладающие определённой функциональностью части, которые могут быть повторно использованы. Каждая из этих частей обычно использует в качестве источника данных несколько связанных контентов, а значит может быть построена на основе группы классов LINQ to SQL, которые генерируются для этих контентов. Поскольку классы LINQ to SQL, используемые в компонентах, должны быть переносимыми, их нужно создавать только при включённой в свойствах сайта опции «Выполнять генерацию, независимую от БД».

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36