8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

实体框架非身份-无法将值 NULL 插入到“ID”列中

FSm 1月前

29 0

我有一个表,其主键为 ID,此字段不是标识列。我对 Entity Framework 6 的迁移是 CreateTable( \'dbo.Action\', c => new { ID = c.Int(nulla...

我有一张表,其主键为 ID,此字段不是标识列。我的 Entity Framework 6 迁移如下

 CreateTable(
   "dbo.Action",
    c => new
    {
       ID = c.Int(nullable: false, identity: false),
       ActionName = c.String(maxLength: 50),
    })
    .PrimaryKey(t => t.ID);

这一切对我来说看起来相当简单。然后我有一个方法来播种一些数据:

public static void Seed(this DbSet<Action> entitySet)
{
    MainContext dbCtx = DataRepositoryBase<Action>.GetContext(entitySet) as MainContext;
    if (dbCtx != null)
    {
            entitySet.Add(new Action()
            {
                ID = 1,
                ActionName = "Test"
            });                
    }
}

就在这时我收到一个错误

\'无法将值 NULL 插入到表 'dbo.Action' 的列 'ID' 中;列不允许为空。INSERT 失败。\r\n该语句已终止\'

如您所见,我显然为 ID 列提供了一个值。我怀疑 Entity Framework 期望 ID 是一个 Identity 列

实体类非常简单

[DataContract]
public class Action
{
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public string ActionName { get; set; }
}
帖子版权声明 1、本帖标题:实体框架非身份-无法将值 NULL 插入到“ID”列中
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由FSm在本站《linq》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 该错误是由于字段名称 Id 应该是主键和身份造成的。
    当 EF 生成插入语句时不会为该字段生成值。

    您可以使用以下方法修复它

    [DataContract]
    public class Action
    {
        [DataMember]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int ID { get; set; }
    
        [DataMember]
        public string ActionName { get; set; }
    }
    
返回
作者最近主题: