This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
developer:linq:components [2011/05/06 16:58] celutp |
developer:linq:components [2011/05/06 17:00] (current) celutp |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Создание компонентов ====== | + | ====== Использование LINQ-to-SQL классов при создании компонентов ====== |
- | Под компонентами в данном случае понимаются небольшие части функционала, которые могут быть повторно использованы. Каждая из этих частей обычно использует в качестве источника данных несколько связанных контентов и соответственно может быть построена на основе группы LINQ-to-SQL классов, которые генерируются для этих контентов. Поскольку компоненты должны быть переносимыми, то они должны создаваться только при включенной опции **Выполнять генерацию, независимую от БД** (**Proceed DB-independent generation**) на [[developer:linq:db_mapping|уровне сайта]]. | + | Под компонентами в данном случае понимаются небольшие части функционала, которые могут быть повторно использованы. Каждая из этих частей обычно использует в качестве источника данных несколько связанных контентов и соответственно может быть построена на основе группы LINQ-to-SQL классов, которые генерируются для этих контентов. Поскольку LINQ-to-SQL классы, используемые в компонентах, должны быть переносимыми, их нужно создавать только при включенной опции **Выполнять генерацию, независимую от БД** (**Proceed DB-independent generation**) на [[developer:linq:db_mapping|уровне сайта]]. |
Для выделения нескольких сущностных классов в одну группу нужно у нескольких контентов задать одинаковое значение в поле **Имя дополнительного контекстного класса** (**Additional context class name**). В качестве значения нужно указывать полное имя класса, с учетом пространств имен. Таким образом, один и тот же контент может участвовать в двух контекстных классах: основном, задаваемом на [[developer:linq:db_mapping|уровне сайта]] и дополнительном, задаваемом на [[developer:linq:db_mapping|уровне контентов]]. Пространства имен для всех генерируемых контекстных классов (как основного, так и дополнительных) для предотвращения конфликта имен должны различаться. | Для выделения нескольких сущностных классов в одну группу нужно у нескольких контентов задать одинаковое значение в поле **Имя дополнительного контекстного класса** (**Additional context class name**). В качестве значения нужно указывать полное имя класса, с учетом пространств имен. Таким образом, один и тот же контент может участвовать в двух контекстных классах: основном, задаваемом на [[developer:linq:db_mapping|уровне сайта]] и дополнительном, задаваемом на [[developer:linq:db_mapping|уровне контентов]]. Пространства имен для всех генерируемых контекстных классов (как основного, так и дополнительных) для предотвращения конфликта имен должны различаться. | ||
- | При использовании компонента на сайте необходимо: | + | При использовании компонента, использующего LINQ-to-SQL классы на сайте необходимо: |
- Воссоздать структуру контентов (например, с помощью механизма выборочного **Backup**/**Restore** и последующего **Site Update**). При этом также должна быть восстановлена информация о отображении в LINQ-to-SQL классы и свойства. | - Воссоздать структуру контентов (например, с помощью механизма выборочного **Backup**/**Restore** и последующего **Site Update**). При этом также должна быть восстановлена информация о отображении в LINQ-to-SQL классы и свойства. | ||
- Сгенерировать .map-файл привязки классов (поскольку классы для этого проекта генерировать не надо, можно установить опцию **Генерировать только .map-файл** (**Generate only .map file**) на [[developer:linq:db_mapping|уровне сайта]]). | - Сгенерировать .map-файл привязки классов (поскольку классы для этого проекта генерировать не надо, можно установить опцию **Генерировать только .map-файл** (**Generate only .map file**) на [[developer:linq:db_mapping|уровне сайта]]). | ||