Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Атрибут DatabaseAttribute

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

Для указания имени базы данных:

  1. Добавьте атрибут DatabaseAttribute к объявлению класса для базы данных.

  2. Добавьте свойство Name к атрибуту DatabaseAttribute.

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

[Database(Name="Database#5")]

public class Database5 : DataContext

{

}

Атрибут TableAttribute

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

Например,

[Table(Name = "Customers")]

public class Customer

{

// ...

}

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

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

Имя таблицы можно уточнять именем схемы, однако это не обязательно. По умолчанию маркер слева от первой точки в строке Name считается именем схемы. Остальная часть имени считается именем таблицы. Поставщик будет задавать имя таблицы так, как это необходимо. Например, поставщик LINQ to SQL для SQL Server обеспечивает использование квадратных скобок, где они требуются.

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

Ситуация

Пример: имя идентификатора

Пример: ожидаемая строка в атрибутах

В противном случае...

Имя схемы содержит точку

Схема: "A.B"

Таблица: "C"

"[A.B].C"

Вторая точка интерпретируется как знак, отделяющий имя схемы от имени таблицы

Имя таблицы или схемы начинается знаком @

"@SomeName"

"[@SomeName]"

Считается именем параметра

Имя схемы начинается знаком [ и заканчивается знаком ]

"[Schema.Table]"

"[[Schema].[Table]]]"

Не заключенный в квадратные скобки идентификатор похож на заключенный в квадратные скобки идентификатор

Имя таблицы начинается знаком [ и заканчивается знаком ]

"[Table]"

"[[Table]]]"

Не заключенный в квадратные скобки идентификатор похож на заключенный в квадратные скобки идентификатор

Атрибут ColumnAttribute

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

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

В следующем коде поле CustomerID в классе Customer сопоставляется со столбцом CustomerID в таблице Customers.

[Table(Name="Customers")]

public class customer

{

[Column(Name="CustomerID")]

public string CustomerID;

// ...

}

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

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

Свойство

Тип

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

Описание

AutoSync

AutoSync

Never

Указывает среде 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 для обнаружения конфликтов оптимистичного параллелизма.

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