Сопоставление на основе атрибутов (LINQ to SQL)
Обновлен: November 2007
LINQ to SQL сопоставляет базу данных SQL Server с объектной моделью LINQ to SQL либо путем применения атрибутов, либо с использованием файла внешнего сопоставления. В этом разделе представлен подход на основе атрибутов.
В своей самой простой форме LINQ to SQL сопоставляет базу данных с DataContext, таблицу с классом, а столбцы и связи — со свойствами этих классов. Атрибуты также можно использовать для сопоставления иерархии наследования в объектной модели. Дополнительные сведения см. в разделе Как создать модель объектов на языке Visual Basic или C# (LINQ to SQL).
Разработчики, использующие Visual Studio, обычно выполняют сопоставление на основе атрибутов с помощью конструктора Сред. Объектно-реляционный конструктор. Дополнительные сведения см. в разделах Реляционный конструктор объектов и Реляционный конструктор объектов и Реляционный конструктор объектов. Можно также воспользоваться средством командной строки SQLMetal или самостоятельно написать код для атрибута вручную. Дополнительные сведения см. в разделе Как создать модель объектов на языке Visual Basic или C# (LINQ to SQL).
Примечание. |
---|
Сопоставление можно также выполнять с помощью внешнего файла XML. Дополнительные сведения см. в разделе Справочные сведения о внешнем сопоставлении (LINQ to SQL). |
В следующих разделах представлено более подробное описание сопоставления на основе атрибутов. Дополнительные сведения см. в описании пространства имен System.Data.Linq.Mapping.
Атрибут DatabaseAttribute
Этот атрибут используется для указания имени базы данных по умолчанию, если оно не предоставлено при подключении. Данный атрибут является необязательным, однако если он используется, следует применить свойство Name, как описано в следующей таблице.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
String |
См. раздел Name. |
Используется со свойством Name, указывает имя базы данных. |
Дополнительные сведения см. в разделе DatabaseAttribute.
Атрибут TableAttribute
Этот атрибут используется для назначения класса как класса сущности, связанного с таблицей или представлением базы данных. LINQ to SQL интерпретирует классы, имеющие данный атрибут, как постоянные классы. В следующей таблице приводится описание свойства Name.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
String |
Строка, соответствующая имени класса |
Определяет класс как класс сущности, связанный с таблицей базы данных. |
Дополнительные сведения см. в разделе TableAttribute.
Атрибут ColumnAttribute
Этот атрибут используется для назначения члена класса сущности, представляющего столбец в таблице базы данных. Этот атрибут можно применять к любому полю или свойству.
Когда LINQ to SQL сохраняет изменения в базе данных, извлекаются и сохраняются только те члены класса, которые определены как столбцы. Члены без данного атрибута считаются непостоянными и не передаются для вставок или обновлений.
В следующей таблице представлено описание свойств этого атрибута.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
AutoSync |
Нет |
Указывает среде CLR на необходимость получить значение после выполнения операции вставки или обновления. Параметры: Always, Never, OnUpdate, OnInsert. |
|
Boolean |
true |
Указывает, что столбец может содержать значения NULL. |
|
String |
Определенный тип столбца базы данных |
Для указания типа столбца базы данных использует типы и модификаторы базы данных. |
|
String |
Пусто |
Определяет вычисляемый столбец в базе данных. |
|
Boolean |
false |
Указывает, что столбец содержит значения, автоматически генерируемые базой данных. |
|
Boolean |
false |
Указывает, что столбец содержит значение дискриминатора для иерархии наследования LINQ to SQL. |
|
Boolean |
false |
Указывает, что этот член класса представляет столбец, входящий в состав первичных ключей таблицы. |
|
Boolean |
false |
Определяет тип столбца члена как штамп времени или номер версии в базе данных. |
|
UpdateCheck |
Always, до тех пор, пока IsVersion имеет значение true для члена |
Указывает, какой подход реализуется в LINQ to SQL для обнаружения конфликтов оптимистичного параллелизма. |
Дополнительные сведения см. в разделе ColumnAttribute.
Примечание. |
---|
В значениях свойства Storage для атрибутов AssociationAttribute и ColumnAttribute учитывается регистр. Например, следует убедиться в том, что регистр символов в значении, использованном в атрибуте свойства AssociationAttribute.Storage, соответствует регистру символов в соответствующих именах свойств в остальном коде. Это относится ко всем языкам программирования среды .NET, даже к тем, которые обычно не учитывают регистр, включая Visual Basic. Дополнительные сведения о свойстве Storage см. в разделе DataAttribute.Storage. |
Атрибут AssociationAttribute
Применяйте этот атрибут для указания свойства, которое будет представлять связь в базе данных, такую как отношение внешнего и первичного ключей. Дополнительные сведения о связях см. в разделе Как сопоставить связи базы данных (LINQ to SQL).
В следующей таблице представлено описание свойств этого атрибута.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
Boolean |
false |
При задании данного свойства для ассоциации, в которой члены внешнего ключа не поддерживают значение NULL, удаляет объект при установке ассоциации значения NULL. |
|
String |
Отсутствует |
Добавляет в ассоциацию поведение удаления. |
|
Boolean |
false |
При значении "true" назначает член в качестве внешнего ключа в ассоциации, представляющей отношение базы данных. |
|
Boolean |
false |
При значении "true" указывает ограничение уникальности для первичного ключа. |
|
String |
Идентификатор связанного класса |
Назначает один или более членов целевого класса сущности в качестве ключевых значений на другой стороне ассоциации. |
|
String |
Идентификатор содержащего класса |
Назначает элементы данного класса сущности, которые будут представлять ключевые значения на этой стороне ассоциации. |
Дополнительные сведения см. в разделе AssociationAttribute.
Примечание. |
---|
В значениях свойства Storage для атрибутов AssociationAttribute и ColumnAttribute учитывается регистр. Например, следует убедиться в том, что регистр символов в значении, использованном в атрибуте свойства AssociationAttribute.Storage, соответствует регистру символов в соответствующих именах свойств в остальном коде. Это относится ко всем языкам программирования среды .NET, даже к тем, которые обычно не учитывают регистр, включая Visual Basic. Дополнительные сведения о свойстве Storage см. в разделе DataAttribute.Storage. |
Атрибут InheritanceMappingAttribute
Применяйте этот атрибут для сопоставления иерархии наследования.
В следующей таблице представлено описание свойств этого атрибута.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
String |
Отсутствует. Необходимо предоставить значение. |
Указывает значение кода дискриминатора. |
|
Boolean |
false |
При значении "true" создает объект данного типа, когда значение дискриминатора в хранилище не соответствует ни одному заданному значению. |
|
Тип |
Отсутствует. Необходимо предоставить значение. |
Указывает тип класса в иерархии. |
Дополнительные сведения см. в разделе InheritanceMappingAttribute.
Атрибут FunctionAttribute
Этот атрибут используется для назначения метода, представляющего хранимую процедуру или пользовательской функцию в базе данных.
В следующей таблице представлено описание свойств этого атрибута.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
Boolean |
false |
При значении "false" указывает сопоставление с хранимой процедурой. При значении "true" указывает сопоставление с пользовательской функцией. |
|
String |
Строка, соответствующая имени базы данных |
Указывает имя хранимой процедуры или пользовательской функции. |
Дополнительные сведения см. в разделе FunctionAttribute.
Атрибут ParameterAttribute
Этот атрибут используется для сопоставления входных параметров в методах хранимых процедур.
В следующей таблице представлено описание свойств этого атрибута.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
String |
Отсутствует |
Указывает тип базы данных. |
|
String |
Строка, соответствующая имени параметра в базе данных |
Указывает имя для параметра. |
Дополнительные сведения см. в разделе ParameterAttribute.
Атрибут ResultTypeAttribute
Этот атрибут используется для указания типа результата.
В следующей таблице представлено описание свойств этого атрибута.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
Тип |
Отсутствует |
Используется в методах, сопоставленных хранимым процедурам, возвращающих IMultipleResults. Объявляет допустимые или ожидаемые сопоставления типов для хранимых процедур. |
Дополнительные сведения см. в разделе ResultTypeAttribute.
Атрибут DataAttribute
Этот атрибут используется для указания имен и закрытых полей хранения.
В следующей таблице представлено описание свойств этого атрибута.
Свойство |
Тип |
Значение по умолчанию |
Описание |
---|---|---|---|
String |
Строка, соответствующая имени базы данных |
Указывает имя таблицы, столбца и т. д. |
|
String |
Открытые методы доступа |
Указывает имя базового поля хранения. |
Дополнительные сведения см. в разделе DataAttribute.