Как присвоить NULL для столбцов объекта SQL - PullRequest
1 голос
/ 21 октября 2008

Я сгенерировал linq to sql entites, но не могу понять, как присвоить null пустому столбцу всякий раз, когда я пытаюсь присвоить ему значение null, он говорит: «нет неявного преобразования типов между int и». Кстати, тип поля int? и столбец базы данных также обнуляется.

Ответы [ 6 ]

1 голос
/ 21 октября 2008

Попробуйте назначить его System.DBNull вместо

0 голосов
/ 13 мая 2016

Это когда вы пытаетесь явно создать набор БД с обнуляемым столбцом в сущности.

new Nullable () - это то, что вы ищете.

someEntity newEntity = new someEntity()
{
   aNullableInt = new Nullable<Int32>()
};
0 голосов
/ 22 октября 2008

Вы написали 'тип поля int?' .
Я предполагаю, что это проблема: тип поля должен быть int (без?) , а свойство ' allow null value ' должно быть установлено до верно .

В конструкторе вы можете изменить тип поля на int? вместо int и ' allow null ', но вы столкнулись со всеми видами проблем таким образом (как вы могли заметить).

0 голосов
/ 22 октября 2008

Вам нужно только присвоить, а затем присвоить нулевое свойство null. Я никогда не должен был назначать или проверять System.DBNull при использовании сущностей linq-to-sql.

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

Для справки, следующее целое поле, которое может быть необнуляемым и не обнуляемым:

private int? _someID;
/// <summary>
/// Gets or sets the SomeID.
/// </summary>
[Column(Name="SomeID", Storage="_someID", DbType="INT", UpdateCheck=UpdateCheck.Never)]
public int? SomeID
{

private int _someOtherID;
/// <summary>
/// Gets or sets the SomeOtherID.
/// </summary>
[Column(Name="SomeOtherID", Storage="_someOtherID", DbType="INT NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
public int SomeOtherID
{

Убедитесь, что ваша сгенерированная сущность выглядит примерно так, как указано выше.

0 голосов
/ 22 октября 2008

Обычно мне приходилось использовать DBNULL.Value при назначении или сравнении значения базы данных с нулевым значением.

0 голосов
/ 21 октября 2008

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

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

Обновление после редактирования: Я вижу, что тип поля равен int?, что совпадает с Nullable<int>, поэтому не должно быть проблем, чтобы установить его на ноль. Однако при получении целочисленного значения вы должны использовать свойство Value int?. Это проблема?

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