====== Настройка отображения с использованием БД ====== Данный режим используется при включенной опции **Использовать прямое отображение из базы данных** (**Use direct mapping from database**) [[:site_configuration#Настройки_сборки_в_LINQ| на уровне сайта]]. ===== Настройки уровня сайта ===== Задаются в [[:site_configuration|свойствах сайта]] в секции **Параметры сборки в LINQ-классы** (**LINQ Assembling Parameters**). ***Имя строки подключения** (**Connection string name**) -- Название строки соединения в секции //connectionStrings// файла //web.config// сайта. По умолчанию - //qp_database//. ***Заменять URL'ы** (**Replace URLs**) -- Включает замену плейсхолдеров ''<%=site_url%>'' и ''<%=upload_url%>'' для полей типа //String//, //VisualEdit// и //Textbox//. Замена работает в обе стороны, как при загрузке, так и при сохранении. Включение этой опции позволяет LINQ-классам поддерживать стандартное поведение Publishing Container'ов. ***Использовать длинные URL'ы** (**Use long URLs**) -- Модифицирует предыдущую опцию так, что замена будет проводиться на абсолютные URL, а не на относительные (по умолчанию). [[developer:web_config|Аналогичная опция]] есть для Publishing Container'ов. ***Пространство имен для генерируемых классов** (**Namespace for generated classes**) -- Пространство имен, в котором будут сгенерированы LINQ-классы. По умолчанию - пустое. ***Имя контекстного класса** (**Context Class Name**) -- Имя контекстного класса. По умолчанию - //QPDataContext//. ***Выполнять генерацию, независимую от БД** (**Proceed DB-independent generation**) -- Включение данной опции позволяет генерировать код, переносимый между различными БД. В этом случае сопоставление между сущностными классами и таблицами БД, осуществляется с помощью специального .map-файла, который также генерируется в этом режиме. Имя .map-файла совпадает с именем контекстного класса. ***Генерировать только .map-файл** (**Generate only .map file**) -- Модификация предыдущей опции. Нужна в случае выполнения на данной БД переносимого кода, который был сгенерирован на другой БД. Таким образом, от данной БД требуется только сопоставление между сущностными классами и таблицами БД. ===== Настройки уровня контента ===== Задаются в [[:content|свойствах контента]] в секции **Параметры сборки в LINQ-классы** (**LINQ Assembling Parameters**). ***Отображать как класс** (**Map as class**) -- Генерация класса для данного контента производится только при включенной опции. ***Имя (единственное)** (**Name (singular)**) -- Допустимое в С# имя контента в единственном числе. Используется как название класса. ***Имя (множественное)** [[:field|Свойства поля]](**Name (plural)**) -- Допустимое в С# имя контента во множественном числе. Используется как название свойства контекстного класса, с которого начинается построение LINQ-to-SQL запроса. ***Использовать фильтрацию по умолчанию** (**Use default filtration**) -- Включение данной опции необходимо для реализации стандартного поведения Publishing Container (поддержка расписания публикации, workflow, архива). В предыдущих версиях реализовалось через вызов метода расширения **ForFrontEnd()**. В текущей версии метод оставлен для обратной совместимости, но в случае включенной фильтрации по умолчанию никаких действий не выполняет. При включенной опции LINQ-класс отображается не на таблицу CONTENT_NNN, а на представление CONTENT_NNN_LIVE (для stage-режима используется аналогичное представление CONTENT_NNN_STAGE вместо CONTENT_NNN_UNITED. ***Имя дополнительного контекстного класса** (**Additional context class name**) -- данное поле используется только при включенной опции **Выполнять генерацию, независимую от БД** (**Proceed DB-independent generation**) на уровне сайта. Кроме стандартной генерации, она позволяет создать дополнительные небольшие контекстные классы для контента или группы контентов (у которых совпадают значения данной опция). Это может быть полезно для создания небольших переносимых частей функционала. В качестве значения поле нужно указывать полное имя класса, с учетом пространств имен. Пространства имен для всех генерируемых контекстных классов (как основного, задаваемого на уровне сайта, так и дополнительных) должны различаться для предотвращения конфликта имен. ===== Настройки уровня поля ===== Задаются в [[:field|свойствах поля]]. ***Отображать как LINQ-свойство** (**Map as LINQ Property**) -- Генерация свойства для данного поля производится только при включенной опции. ***Имя LINQ-свойства** (**LINQ Property Name**) -- Допустимое в С# имя поля. Используется как название свойства. ***Имя обратного LINQ-свойства** (**LINQ Back Property Name**) -- Допустимое в С# имя обратного поля для O2M-связи (аналога в QP7 нет). Для M2M-связей доступны дополнительные опции: ***Отображать узловую таблицу как класс** (**Map Junction Table as Class**) -- Генерация класса для данной узловой таблицы производится только при включенной опции ***Имя узлового LINQ-класса (единственное)** (**LINQ Junction Class Name (singular)**) -- Допустимое в С# имя узловой таблицы, хранящей данные M2M-связи, в единственном числе. Используется как название класса. ***Имя узлового LINQ-класса (множественное)** (**LINQ Junction Class Name (plural)**) -- Допустимое в С# имя узловой таблицы, хранящей данные M2M-связи, во множественном числе. Используется как название свойства контекстного класса, с которого начинается построение LINQ-to-SQL запроса.