Невозможно вставить значение NULL в столбец в ASP.NET MVC Entity Framework - программирование
Подтвердить что ты не робот

Невозможно вставить значение 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"...

4b9b3361

Ответ 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 будет генерировать его для вас.