首页 文章

linq-sql insert忽略了主键的sql server默认值

提问于
浏览
0

我有一个表,主键字段的默认值为newid() - >,每次插入一条记录时都会生成一个唯一的id . 当我尝试从任何SQL管理工具直接在数据库中插入记录时,它可以工作 . 但是当我尝试使用C#linq-sql insert时,它给出了以下错误:

无法将值NULL插入列'',table'';列不允许空值 . INSERT失败 . 该语句已终止 .

为什么linq忽略了字段的默认值,并且有没有其他方法可以做到这一点,因为我不希望下面主键中的正常顺序int id是插入的c#代码:

databaseDataContext db = new databaseDataContext();
        order c = new order();

        c.orderName = "Untitled";
        c.orderStatus = "New";
        db.orders.InsertOnSubmit(c);
        db.SubmitChanges();

1 回答

  • 3

    @dbugger提供的建议已经足够了 . 但是,如果仍需要在SQL中生成它,请确保指定ID列(主键字段)具有IsDbGenerated属性以及IsPrimaryKey:

    [Column(IsDbGenerated = true, IsPrimaryKey = true)]
    

相关问题