свойство строки linq to sql из ненулевого столбца со значением по умолчанию - PullRequest
1 голос
/ 13 марта 2010

У меня есть класс LINQ to SQL "VoucherRecord", основанный на простой таблице. Одно свойство «Примечание» - это строка, представляющая столбец nvarchar (255), который не имеет значения NULL и имеет значение по умолчанию пустой строки ('').

Если я создаю экземпляр VoucherRecord, начальное значение свойства Note равно нулю. Если я добавлю его, используя метод InsertOnSubmit объекта DataContext, я получу сообщение об ошибке SQL:

Невозможно вставить значение NULL в столбец 'Note', таблица 'foo.bar.tblVoucher'; столбец не допускает пустых значений. INSERT терпит неудачу.

Почему база данных не включается по умолчанию? Какой тип запроса может обойти по умолчанию в любом случае? Как просмотреть сгенерированный sql для этого действия?

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 13 марта 2010

Если вы опустите столбец, значение становится базой данных по умолчанию, но все, что вы вставляете, используется вместо значения по умолчанию, например:

INSERT INTO MyTable (ID, VoucherRecord) Values(34, NULL) -- Null is used
INSERT INTO MyTable (ID) Values(34) -- Default is used

Например, у вас есть столбец, который по умолчанию имеет значение, отличное от NULL, но вы специально хотите, чтобы NULL ... чтобы это работало, любое указанное вами значение ДОЛЖНО переопределять значение по умолчанию, даже в случае NULL.

Вам необходимо установить Автосинхронизация на OnInsert, Автоматически сгенерированное значение на true и Nullable на false для вашего столбца на Работа. Смотрите здесь полный разброс с пояснениями на стороне Linq.

Для просмотра сгенерированного SQL Я должен порекомендовать LinqPad

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...