Linq-SQL 插入忽略主键的 SQL Server 默认值

本文关键字:SQL Server 默认值 插入 Linq-SQL | 更新日期: 2024-11-05 03:00:18

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

不能将值 NULL 插入到列 ''、表 '' 中;列不允许空值。插入失败。该语句已终止。

为什么 linq 忽略字段的默认值,鉴于我不希望在主键中使用正常的顺序 int id,是否有任何其他方法可以做到这一点下面是插入的 C# 代码:

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

Linq-SQL 插入忽略主键的 SQL Server 默认值

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

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