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