Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# EF->;System.Data.Entity.Infrastructure.DbUpdateException->;主键Guid。空约束->;默认绑定=newsequentialid()_C#_Entity Framework_Entity Framework 5_C# 5.0 - Fatal编程技术网

C# EF->;System.Data.Entity.Infrastructure.DbUpdateException->;主键Guid。空约束->;默认绑定=newsequentialid()

C# EF->;System.Data.Entity.Infrastructure.DbUpdateException->;主键Guid。空约束->;默认绑定=newsequentialid(),c#,entity-framework,entity-framework-5,c#-5.0,C#,Entity Framework,Entity Framework 5,C# 5.0,我有一段代码在一天中经常受到重创(非常频繁) 它在正在更新的表上使用EntityFramework和GUID作为ID。(Id=PK=Guid) 将新记录插入表时,它将使用newsequentialid()的表默认绑定。我会包括正在运行的代码,但这是非常常见的EF C代码: _context.SaveChanges(); 我遇到的是,当这段代码被点击并插入一条新记录时,它似乎在自我践踏。返回的错误为: System.Data.Entity.Infrastructure.DbUpdateExcep

我有一段代码在一天中经常受到重创(非常频繁)

它在正在更新的表上使用EntityFramework和GUID作为ID。(Id=PK=Guid)

将新记录插入表时,它将使用newsequentialid()的表默认绑定。我会包括正在运行的代码,但这是非常常见的EF C代码:

_context.SaveChanges();
我遇到的是,当这段代码被点击并插入一条新记录时,它似乎在自我践踏。返回的错误为:

System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
我在它上面运行了一个sql profilier,它实际上是在说由于主键000-0000的限制,它无法执行插入。。。。aka Guid.Empty()

因此,我目前的想法是,它运行得如此频繁,以至于对newsequentialid()的所有请求都互相践踏,从而导致了这个问题


我希望其他人也有过这样或类似的问题,可以对此发表评论。我想我很久以前遇到过这个问题,读到解决方案是将EF切换到ADO.NET

我也遇到了这个问题,通过在EF设计器中将属性“StoreGeneratedPattern”更改为“identiy”来解决它


我想发布一张图片,但我似乎没有足够的信誉点。

就我个人而言,在使用Guid时,我更喜欢在代码中调用
Guid.NewGuid()
,然后自己将其传递给数据库;这样,我就可以在对象图中的子对象中再次使用它,而不必从db获取派生值。我唯一担心db生成我的ID的时候是使用
int
或需要顺序的东西。我知道这不一定能回答你的问题,但我想我会建议一种不同的方法。@Joe我认为你的意见就是答案-没有必要让db生成一个全局唯一的id,也没有必要为此产生开销。不幸的是,在这个系统中,这是我们的系统范围标准。