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


Настраиваемые сопоставления типов SQL-CLR

Сопоставление типов SQL Server и среды CLR автоматически указывается при использовании средства командной строки SQLMetal и реляционного конструктора объектов.

Если настраиваемое сопоставление не выполняется, эти средства назначают сопоставления типов по умолчанию, как описано в сопоставлении типов SQL-CLR. Если вы хотите сопоставлять типы иначе, чем по умолчанию, необходимо выполнить определенную настройку сопоставления типов.

При проведении пользовательского сопоставления типов рекомендуется выполнять изменения в промежуточном DBML-файле. После этого настроенный DBML-файл следует применять при создании кода и файлов сопоставления с помощью SQLMetal или реляционного конструктора объектов.

Как только из кода и файлов сопоставления будет создан экземпляр объекта DataContext, метод DataContext.CreateDatabase создаст базу данных на основании указанных сопоставлений. Если в этих сопоставлениях нет указанных атрибутов CLR type, будут применяться сопоставления по умолчанию.

Настройка с помощью SQLMetal или реляционного конструктора объектов

С помощью SQLMetal и реляционного конструктора объектов можно автоматически создать модель объектов, которая будет включать сведения о сопоставлении типов внутри или вне файла кода. Поскольку эти файлы переписываются средствами SQLMetal и реляционного конструктора объектов при каждом повторном создании сопоставлений, рекомендуемым подходом к указанию пользовательских сопоставлений типов является настройка DBML-файла.

Чтобы настроить сопоставления типов с помощью SQLMetal или реляционного конструктора объектов, сначала создайте файл DBML. Затем, прежде чем создавать файл кода или файл сопоставления, измените DBML-файл, чтобы идентифицировать желаемые сопоставления типов. При использовании SQLMetal необходимо вручную изменить атрибуты Type и DbType в DBML-файле, чтобы настроить пользовательские сопоставления типов. При использовании реляционного конструктора объектов изменения можно внести средствами конструктора. Дополнительные сведения об использовании конструктора O/R см. в статье LINQ to SQL Tools в Visual Studio.

Примечание.

Некоторые сопоставления типов могут приводить к возникновению исключений переполнения или потери данных в ходе преобразования данных в базу данных или из нее. Внимательно просмотрите матрицу поведения сопоставления типов во время выполнения в сопоставлении типов SQL-CLR перед настройкой.

Чтобы настройки сопоставления типов распознавались средством SQLMetal или реляционным конструктором объектов, при формировании файла кода или внешнего файла сопоставления убедитесь в том, что у них имеется путь к пользовательскому файлу DBML. Хотя этого и не требуется для настройки сопоставления типов, рекомендуется всегда отделять сведения о сопоставлении типов от файла кода и создавать дополнительный внешний файл сопоставления. Это придаст некоторую гибкость, поскольку не придется перекомпилировать файл кода.

Интеграция изменений баз данных

При изменении базы данных потребуется обновлять DBML-файл, чтобы он отражал эти изменения. Один из способов реализации этого состоит в автоматическом создании нового DBML-файла и последующем повторном выполнении настройки сопоставления типов. Альтернативный способ заключается в сравнении различий между новым файлом DBML и настроенным файлом DBML и последующем обновлении вручную настроенного DBML-файла, чтобы он отражал изменения базы данных.

См. также