繁体   English   中英

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

[英]Cannot insert the value NULL into column in 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';列不允许为空值。INSERT 失败。\\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"异常...

我通过添加[DatabaseGenerated(DatabaseGeneratedOption.None)]来解决它,如下所示:

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

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

我在使用Microsoft SQL Server多次遇到此问题,并且我已按照相同的方法修复它。 要解决此问题,请确保将Identity Specification设置为Yes 这是它的样子:

身份规范

通过这种方式,列号通常会像主键一样自动递增

HOW?:右键单击包含该列的表,选择Design选择主键并在Column Properties窗口中找到Identity Specification并将其设置为Yes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM