Невозможно вставить значение NULL в столбец в ASP.NET MVC Entity Framework
При попытке использовать этот код:
var model = new MasterEntities();
var customer = new Customers();
customer.Sessionid = 25641;
model.Customers.Add(customer);
model.SaveChanges();
Я получаю:
{ "Невозможно вставить значение NULL в столбец" Sessionid ", таблица 'Master.dbo.Column'; столбец не допускает нулей. ВСТАВИТЬ не выполняется.\r\nПриложение завершено." }
Столбец "Sessionid" на самом деле является основным ключом и отмечен [KEY] следующим образом:
public class Customers
{
[Key]
public long Sessionid { get; set; }
public long? Pers { get; set; }
}
Поэтому в соответствии с этим вопросом кажется, что, когда свойство помечено [KEY]
, EF игнорирует мое собственное объявление Sessionid, поскольку оно ожидает, что база данных будет присвойте значение.
Итак, как я могу это решить? Если я удалю [KEY]
, я получаю исключение "entity type has no key defined"
...
Ответы
Ответ 1
Я решил это, добавив [DatabaseGenerated(DatabaseGeneratedOption.None)]
следующим образом:
public class Customers
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long Sessionid { get; set; }
public long? Pers { get; set; }
}
Ответ 2
Вы можете настроить SQL для автоматического генерации (и автоматического увеличения) первичного ключа для таблицы при вставках. Затем просто удалите [Key] в С#, и вам не нужно устанавливать идентификатор в приложении вручную, db будет генерировать его для вас.