Поделиться через


Сопоставление на основе атрибутов (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).

Bb386971.alert_note(ru-ru,VS.90).gifПримечание.

Сопоставление можно также выполнять с помощью внешнего файла XML. Дополнительные сведения см. в разделе Справочные сведения о внешнем сопоставлении (LINQ to SQL).

В следующих разделах представлено более подробное описание сопоставления на основе атрибутов. Дополнительные сведения см. в описании пространства имен System.Data.Linq.Mapping.

Атрибут DatabaseAttribute

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

Свойство

Тип

Значение по умолчанию

Описание

Name

String

См. раздел Name.

Используется со свойством Name, указывает имя базы данных.

Дополнительные сведения см. в разделе DatabaseAttribute.

Атрибут TableAttribute

Этот атрибут используется для назначения класса как класса сущности, связанного с таблицей или представлением базы данных. LINQ to SQL интерпретирует классы, имеющие данный атрибут, как постоянные классы. В следующей таблице приводится описание свойства Name.

Свойство

Тип

Значение по умолчанию

Описание

Name

String

Строка, соответствующая имени класса

Определяет класс как класс сущности, связанный с таблицей базы данных.

Дополнительные сведения см. в разделе TableAttribute.

Атрибут ColumnAttribute

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

Когда LINQ to SQL сохраняет изменения в базе данных, извлекаются и сохраняются только те члены класса, которые определены как столбцы. Члены без данного атрибута считаются непостоянными и не передаются для вставок или обновлений.

В следующей таблице представлено описание свойств этого атрибута.

Свойство

Тип

Значение по умолчанию

Описание

AutoSync

AutoSync

Нет

Указывает среде CLR на необходимость получить значение после выполнения операции вставки или обновления.

Параметры: Always, Never, OnUpdate, OnInsert.

CanBeNull

Boolean

true

Указывает, что столбец может содержать значения NULL.

DbType

String

Определенный тип столбца базы данных

Для указания типа столбца базы данных использует типы и модификаторы базы данных.

Expression

String

Пусто

Определяет вычисляемый столбец в базе данных.

IsDbGenerated

Boolean

false

Указывает, что столбец содержит значения, автоматически генерируемые базой данных.

IsDiscriminator

Boolean

false

Указывает, что столбец содержит значение дискриминатора для иерархии наследования LINQ to SQL.

IsPrimaryKey

Boolean

false

Указывает, что этот член класса представляет столбец, входящий в состав первичных ключей таблицы.

IsVersion

Boolean

false

Определяет тип столбца члена как штамп времени или номер версии в базе данных.

UpdateCheck

UpdateCheck

Always, до тех пор, пока IsVersion имеет значение true для члена

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

Дополнительные сведения см. в разделе ColumnAttribute.

Bb386971.alert_note(ru-ru,VS.90).gifПримечание.

В значениях свойства Storage для атрибутов AssociationAttribute и ColumnAttribute учитывается регистр. Например, следует убедиться в том, что регистр символов в значении, использованном в атрибуте свойства AssociationAttribute.Storage, соответствует регистру символов в соответствующих именах свойств в остальном коде. Это относится ко всем языкам программирования среды .NET, даже к тем, которые обычно не учитывают регистр, включая Visual Basic. Дополнительные сведения о свойстве Storage см. в разделе DataAttribute.Storage.

Атрибут AssociationAttribute

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

В следующей таблице представлено описание свойств этого атрибута.

Свойство

Тип

Значение по умолчанию

Описание

DeleteOnNull

Boolean

false

При задании данного свойства для ассоциации, в которой члены внешнего ключа не поддерживают значение NULL, удаляет объект при установке ассоциации значения NULL.

DeleteRule

String

Отсутствует

Добавляет в ассоциацию поведение удаления.

IsForeignKey

Boolean

false

При значении "true" назначает член в качестве внешнего ключа в ассоциации, представляющей отношение базы данных.

IsUnique

Boolean

false

При значении "true" указывает ограничение уникальности для первичного ключа.

OtherKey

String

Идентификатор связанного класса

Назначает один или более членов целевого класса сущности в качестве ключевых значений на другой стороне ассоциации.

ThisKey

String

Идентификатор содержащего класса

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

Дополнительные сведения см. в разделе AssociationAttribute.

Bb386971.alert_note(ru-ru,VS.90).gifПримечание.

В значениях свойства Storage для атрибутов AssociationAttribute и ColumnAttribute учитывается регистр. Например, следует убедиться в том, что регистр символов в значении, использованном в атрибуте свойства AssociationAttribute.Storage, соответствует регистру символов в соответствующих именах свойств в остальном коде. Это относится ко всем языкам программирования среды .NET, даже к тем, которые обычно не учитывают регистр, включая Visual Basic. Дополнительные сведения о свойстве Storage см. в разделе DataAttribute.Storage.

Атрибут InheritanceMappingAttribute

Применяйте этот атрибут для сопоставления иерархии наследования.

В следующей таблице представлено описание свойств этого атрибута.

Свойство

Тип

Значение по умолчанию

Описание

Code

String

Отсутствует. Необходимо предоставить значение.

Указывает значение кода дискриминатора.

IsDefault

Boolean

false

При значении "true" создает объект данного типа, когда значение дискриминатора в хранилище не соответствует ни одному заданному значению.

Type

Тип

Отсутствует. Необходимо предоставить значение.

Указывает тип класса в иерархии.

Дополнительные сведения см. в разделе InheritanceMappingAttribute.

Атрибут FunctionAttribute

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

В следующей таблице представлено описание свойств этого атрибута.

Свойство

Тип

Значение по умолчанию

Описание

IsComposable

Boolean

false

При значении "false" указывает сопоставление с хранимой процедурой. При значении "true" указывает сопоставление с пользовательской функцией.

Name

String

Строка, соответствующая имени базы данных

Указывает имя хранимой процедуры или пользовательской функции.

Дополнительные сведения см. в разделе FunctionAttribute.

Атрибут ParameterAttribute

Этот атрибут используется для сопоставления входных параметров в методах хранимых процедур.

В следующей таблице представлено описание свойств этого атрибута.

Свойство

Тип

Значение по умолчанию

Описание

DbType

String

Отсутствует

Указывает тип базы данных.

Name

String

Строка, соответствующая имени параметра в базе данных

Указывает имя для параметра.

Дополнительные сведения см. в разделе ParameterAttribute.

Атрибут ResultTypeAttribute

Этот атрибут используется для указания типа результата.

В следующей таблице представлено описание свойств этого атрибута.

Свойство

Тип

Значение по умолчанию

Описание

Type

Тип

Отсутствует

Используется в методах, сопоставленных хранимым процедурам, возвращающих IMultipleResults. Объявляет допустимые или ожидаемые сопоставления типов для хранимых процедур.

Дополнительные сведения см. в разделе ResultTypeAttribute.

Атрибут DataAttribute

Этот атрибут используется для указания имен и закрытых полей хранения.

В следующей таблице представлено описание свойств этого атрибута.

Свойство

Тип

Значение по умолчанию

Описание

Name

String

Строка, соответствующая имени базы данных

Указывает имя таблицы, столбца и т. д.

Storage

String

Открытые методы доступа

Указывает имя базового поля хранения.

Дополнительные сведения см. в разделе DataAttribute.

См. также

Другие ресурсы

Справочник (LINQ to SQL)