无法将值NULL插入到ASP.NET MVC实体框架的列中怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

当尝试使用此代码时:

var model = new MasterEntities();

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

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

我得到:

{"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."}

列“Sessionid”实际上是主键,并被标记为键就像这样:

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

看起来好像当属性被标记时[KEY],EF忽略我自己的Sessionid声明,因为它期望数据库分配值。

那我该如何解决这个问题?如果我删除[KEY]我得到"entity type has no key defined"异常

提问于
用户回答回答于

我通过添加[DatabaseGenerated(DatabaseGeneratedOption.None)]就像这样:

public class Customers
    {   
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long Sessionid { get; set; }
        public long? Pers { get; set; }
    }
用户回答回答于

可以将SQL配置为在插入时自动生成(并自动递增)表的主键。然后,只需在C#中删除[Key],并且不需要手动设置应用程序中的ID,那么数据库将生成它。

扫码关注云+社区

领取腾讯云代金券