Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot insert the value NULL into column in ASP.NET MVC Entity Framework

When trying to use this code:

var model = new MasterEntities();

var customer = new Customers();
customer.Sessionid = 25641;

model.Customers.Add(customer);
model.SaveChanges();

I get:

{"Cannot insert the value NULL into column 'Sessionid', table 'master.dbo.Column'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."}

The column "Sessionid" is actually the primary key and is marked with [KEY] like this:

 public class Customers
    {   
        [Key]
        public long Sessionid { get; set; }
        public long? Pers { get; set; }
    }

So according to this question, it seems as if when the property is marked with [KEY], EF ignores my own declaration of Sessionid since it expects the database to assign the value.

So how can I solve this? If I remove [KEY] I get the "entity type has no key defined" exception...

like image 724
Dimo Avatar asked Nov 01 '13 13:11

Dimo


2 Answers

I solved it by adding [DatabaseGenerated(DatabaseGeneratedOption.None)] like this:

public class Customers
    {   
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long Sessionid { get; set; }
        public long? Pers { get; set; }
    }
like image 158
Dimo Avatar answered Sep 28 '22 14:09

Dimo


You can configure SQL to auto-generate (and auto-increment) the primary key for the table upon inserts. Then just remove the [Key] in C# and you don't need to set the ID in the application manually, the db will generate it for you.

like image 42
Code Monkey Avatar answered Sep 28 '22 14:09

Code Monkey