Сопоставление, основанное на атрибутах
LINQ to SQL сопоставляет базу данных SQL Server с объектной моделью LINQ to SQL, применяя атрибуты или используя внешний файл сопоставления. В этом разделе представлен подход на основе атрибутов.
В самой простой форме LINQ to SQL сопоставляет базу данных DataContextс таблицей с классом, столбцами и связями со свойствами этих классов. Атрибуты также можно использовать для сопоставления иерархии наследования в объектной модели. Дополнительные сведения см. в статье "Практическое руководство. Создание объектной модели в Visual Basic или C#".
Разработчики, использующие Visual Studio, обычно выполняют сопоставление на основе атрибутов с помощью реляционный конструктор объектов. Можно также использовать программу командной строки SQLMetal или вручную написать код атрибутов самостоятельно. Дополнительные сведения см. в статье "Практическое руководство. Создание объектной модели в Visual Basic или C#".
Примечание.
Сопоставление можно также выполнять с помощью внешнего файла XML. Дополнительные сведения см. в разделе "Внешнее сопоставление".
В следующих разделах представлено более подробное описание сопоставления на основе атрибутов. Дополнительные сведения см. в описании пространства имен System.Data.Linq.Mapping.
Атрибут DatabaseAttribute
Этот атрибут используется для указания имени базы данных по умолчанию, если оно не предоставлено при подключении. Данный атрибут является необязательным, однако если он используется, следует применить свойство Name, как описано в следующей таблице.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
Name | Строка | См. раздел Name. | Используется со свойством Name, указывает имя базы данных. |
Дополнительные сведения см. в разделе DatabaseAttribute.
Атрибут TableAttribute
Чтобы определить класс как класс сущности, связанный с таблицей базы данных или представлением, используется атрибут. LINQ to SQL обрабатывает классы, имеющие этот атрибут как постоянные классы. В следующей таблице приводится описание свойства Name.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
Name | Строка | Строка, соответствующая имени класса | Определяет класс как класс сущности, связанный с таблицей базы данных. |
Дополнительные сведения см. в разделе TableAttribute.
Атрибут ColumnAttribute
Этот атрибут используется для назначения члена класса сущности, представляющего столбец в таблице базы данных. Этот атрибут можно применять к любому полю или свойству.
Только те элементы, которые вы определяете как столбцы, извлекаются и сохраняются при сохранении LINQ to SQL изменений в базе данных. Члены без данного атрибута считаются непостоянными и не передаются для вставок или обновлений.
В следующей таблице представлено описание свойств этого атрибута.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
AutoSync | AutoSync | Никогда | Указывает среде CLR на необходимость получить значение после выполнения операции вставки или обновления. Параметры: Always, Never, OnUpdate, OnInsert. |
CanBeNull | Логический | true |
Указывает, что столбец может содержать значения NULL. |
DbType | Строка | Определенный тип столбца базы данных | Для указания типа столбца базы данных использует типы и модификаторы базы данных. |
Expression | Строка | Нет значения | Определяет вычисляемый столбец в базе данных. |
IsDbGenerated | Логический | false |
Указывает, что столбец содержит значения, автоматически генерируемые базой данных. |
IsDiscriminator | Логический | false |
Указывает, что столбец содержит дискриминационные значения иерархии наследования LINQ to SQL. |
IsPrimaryKey | Логический | false |
Указывает, что этот член класса представляет столбец, входящий в состав первичных ключей таблицы. |
IsVersion | Логический | false |
Определяет тип столбца члена как метка времени или номер версии в базе данных. |
UpdateCheck | UpdateCheck | Always , до тех пор, пока IsVersion имеет значение true для члена |
Указывает, как LINQ to SQL подходит к обнаружению конфликтов оптимистического параллелизма. |
Дополнительные сведения см. в разделе ColumnAttribute.
Примечание.
В значениях свойства Storage для атрибутов AssociationAttribute и ColumnAttribute учитывается регистр. Например, следует убедиться в том, что регистр символов в значении, использованном в атрибуте свойства AssociationAttribute.Storage, соответствует регистру символов в соответствующих именах свойств в остальном коде. Это относится ко всем языкам программирования .NET, даже тем, которые обычно не учитывает регистр, включая Visual Basic. Дополнительные сведения о свойстве Storage см. в разделе DataAttribute.Storage.
Атрибут AssociationAttribute
Применяйте этот атрибут для указания свойства, которое будет представлять связь в базе данных, такую как отношение внешнего и первичного ключей. Дополнительные сведения о связях см. в разделе "Практическое руководство. Сопоставление связей базы данных".
В следующей таблице представлено описание свойств этого атрибута.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
DeleteOnNull | Boolean | false |
При задании данного свойства для ассоциации, в которой члены внешнего ключа не поддерживают значение NULL, удаляет объект при установке ассоциации значения NULL. |
DeleteRule | Строка | нет | Добавляет в ассоциацию поведение удаления. |
IsForeignKey | Логический | false |
При значении "true" назначает член в качестве внешнего ключа в ассоциации, представляющей отношение базы данных. |
IsUnique | Логический | false |
При значении «true» указывает ограничение уникальности для первичного ключа. |
OtherKey | Строка | Идентификатор связанного класса | Назначает один или более членов целевого класса сущности в качестве ключевых значений на другой стороне ассоциации. |
ThisKey | Строка | Идентификатор содержащего класса | Назначает элементы данного класса сущности, которые будут представлять ключевые значения на этой стороне ассоциации. |
Дополнительные сведения см. в разделе AssociationAttribute.
Примечание.
В значениях свойства Storage для атрибутов AssociationAttribute и ColumnAttribute учитывается регистр. Например, следует убедиться в том, что регистр символов в значении, использованном в атрибуте свойства AssociationAttribute.Storage, соответствует регистру символов в соответствующих именах свойств в остальном коде. Это относится ко всем языкам программирования .NET, даже тем, которые обычно не учитывает регистр, включая Visual Basic. Дополнительные сведения о свойстве Storage см. в разделе DataAttribute.Storage.
Атрибут InheritanceMappingAttribute
Применяйте этот атрибут для сопоставления иерархии наследования.
В следующей таблице представлено описание свойств этого атрибута.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
Code | Строка | Нет. Необходимо предоставить значение. | Указывает значение кода дискриминатора. |
IsDefault | Логический | false |
При значении "true" создает объект данного типа, когда значение дискриминатора в хранилище не соответствует ни одному заданному значению. |
Type | Тип | Нет. Необходимо предоставить значение. | Указывает тип класса в иерархии. |
Дополнительные сведения см. в разделе InheritanceMappingAttribute.
Атрибут FunctionAttribute
Этот атрибут используется для назначения метода, представляющего хранимую процедуру или пользовательской функцию в базе данных.
В следующей таблице представлено описание свойств этого атрибута.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
IsComposable | Boolean | false |
Если значение равно false, указывает сопоставление с хранимой процедурой. При значении «true» указывает сопоставление с пользовательской функцией. |
Name | Строка | Строка, соответствующая имени базы данных | Указывает имя хранимой процедуры или пользовательской функции. |
Дополнительные сведения см. в разделе FunctionAttribute.
Атрибут ParameterAttribute
Этот атрибут используется для сопоставления входных параметров в методах хранимых процедур.
В следующей таблице представлено описание свойств этого атрибута.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
DbType | Строка | нет | Указывает тип базы данных. |
Name | Строка | Строка, соответствующая имени параметра в базе данных | Указывает имя для параметра. |
Дополнительные сведения см. в разделе ParameterAttribute.
Атрибут ResultTypeAttribute
Этот атрибут используется для указания типа результата.
В следующей таблице представлено описание свойств этого атрибута.
Свойство | Тип | По умолчанию. | Описание |
---|---|---|---|
Type | Тип | (Нет) | Используется в методах, сопоставленных с хранимыми процедурами, возвращающих IMultipleResults. Объявляет допустимые или ожидаемые сопоставления типов для хранимых процедур. |
Дополнительные сведения см. в разделе ResultTypeAttribute.
Атрибут DataAttribute
Этот атрибут используется для указания имен и закрытых полей хранения.
В следующей таблице представлено описание свойств этого атрибута.
Свойство | Тип | По умолчанию. | Description |
---|---|---|---|
Name | Строка | Строка, соответствующая имени базы данных | Указывает имя таблицы, столбца и т. д. |
Storage | Строка | Открытые методы доступа | Указывает имя базового поля хранения. |
Дополнительные сведения см. в разделе DataAttribute.