У меня есть база данных SQL Server с таблицей с этими полями:
- A
bit
со значением по умолчанию 1,NOT NULL
. - A
smalldatetime
со значением по умолчаниюgettime()
,NOT NULL
. -
int
без значения по умолчаниюIDENTITY
,NOT NULL
.
Когда я создаю Linq для SQL для этой таблицы, происходит следующее:
-
bit
не уделяется особого внимания. -
smalldatetime
не предоставляется никакого специального лечения. -
int
отмечен какIsDbGenerated
.
Это означает, что когда я делаю вставки с использованием Linq to SQL, произойдет следующее:
-
bit
будет отправлен как 0, переопределив значение по умолчанию. Right? -
smalldatetime
будет отправлен как неинициализированныйSystem.DateTime
, что приведет к ошибке на SQL-сервере, поскольку оно не падает с диапазоном smalldatetime SQL Server. Right? -
IsDbGenerated
int
не будет отправлен; DB будет генерировать значение, которое Linq to SQL будет читать.
Какие изменения я должен внести, чтобы этот сценарий работал?
Подводя итог: я хочу непустые поля с присвоенными DB значениями по умолчанию, но я не хочу, чтобы они IsDbGenerated
, если это означает, что я не могу предоставлять значения для них при создании обновлений или вставок с использованием Linq to SQL. Я также не хочу их IsDbGenerated
, если это означает, что мне нужно вручную изменить код, сгенерированный Linq на SQL.
РЕДАКТИРОВАТЬ: Ответ кажется, что это ограничение в текущем Linq to SQL.