Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq sql insert正在忽略主键的sql server默认值_C#_Sql Server_Database_Linq To Sql - Fatal编程技术网

C# linq sql insert正在忽略主键的sql server默认值

C# linq sql insert正在忽略主键的sql server默认值,c#,sql-server,database,linq-to-sql,C#,Sql Server,Database,Linq To Sql,我有一个表,主键字段有一个默认值newid()-->,它在每次插入记录时生成一个唯一的id。当我尝试从任何sql管理工具直接在数据库中插入记录时,它都能工作。但是,当我尝试使用C#linq sql insert时,会出现以下错误: 无法将值NULL插入列“”,表“”;列不允许空值。插入失败。声明已终止 既然我不希望主键中有正常的顺序int-id,为什么linq会忽略字段的默认值,有没有其他方法可以做到这一点 以下是插入的c#代码: databaseDataContext db = new da

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

无法将值NULL插入列“”,表“”;列不允许空值。插入失败。声明已终止

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

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

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

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

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

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

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

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

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

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

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


请显示代码。请先尝试更新模型,如果模型不起作用,请向我们提供引发异常的代码。是的,因为您使用的是GUID,在C#代码中生成它,并在插入之前将ID字段分配给它。@dbugger提出了一个很好的建议-我怀疑LINQ-SQL正在设置将空ID传递给SQL,这将阻止SQL使用默认值。在任何情况下,自行生成密钥意味着您不必返回数据库去查找它是什么-您可以在关系中使用它,等等。您可以提供代码或表结构的模型吗?请显示代码。请先尝试更新您的模型,如果模型不起作用,请向我们提供引发异常的代码。是的,由于您仍在使用GUID,请在C#code中生成它,并在插入之前将ID字段分配给它。@dbugger提出了一个很好的建议-我怀疑LINQ-SQL正在设置将空ID传递给SQL,这将阻止SQL使用默认ID。在任何情况下,自行生成密钥意味着您不必返回数据库去查找它是什么-您可以在关系中使用它,等等。您可以提供代码或表结构的模型吗?请显示代码。请先尝试更新您的模型,如果模型不起作用,请向我们提供引发异常的代码。是的,由于您仍在使用GUID,请在C#code中生成它,并在插入之前将ID字段分配给它。@dbugger提出了一个很好的建议-我怀疑LINQ-SQL正在设置将空ID传递给SQL,这将阻止SQL使用默认ID。在任何情况下,自行生成密钥意味着您不必返回数据库去查找它是什么-您可以在关系中使用它,等等。您可以提供代码或表结构的模型吗?请显示代码。请先尝试更新您的模型,如果模型不起作用,请向我们提供引发异常的代码。是的,由于您仍在使用GUID,请在C#code中生成它,并在插入之前将ID字段分配给它。@dbugger提出了一个很好的建议-我怀疑LINQ-SQL正在设置将空ID传递给SQL,这将阻止SQL使用默认ID。在任何情况下,您自己生成密钥意味着您不必返回数据库去找出它是什么-您可以在关系中使用它,等等。您可以提供代码或表结构的模型吗