C# 尝试为现有条目创建新关系时出现恼人的错误
我在数据库中建立了一个相当简单的多对多关系,并从中生成了 我需要能够在用户和订单之间创建关系(将用户分配给订单) 一切似乎都很好,但当我试着打电话时C# 尝试为现有条目创建新关系时出现恼人的错误,c#,asp.net-mvc,entity-framework,ef-database-first,C#,Asp.net Mvc,Entity Framework,Ef Database First,我在数据库中建立了一个相当简单的多对多关系,并从中生成了 我需要能够在用户和订单之间创建关系(将用户分配给订单) 一切似乎都很好,但当我试着打电话时 db.Orders.Add(order); // Set all attached users to unchanged db.ChangeTracker.Entries<AspNetUser>().ToList() .ForEach(t => t.State = System.Data.Entity.EntitySt
db.Orders.Add(order);
// Set all attached users to unchanged
db.ChangeTracker.Entries<AspNetUser>().ToList()
.ForEach(t => t.State = System.Data.Entity.EntityState.Unchanged);
try
{
db.SaveChanges();
}
我确实注意到,奇怪的是,上面的错误引用了无效的对象名OrderAspNetUsers
,但我数据库中的表肯定被称为OrderAspNetUsers
这是多元化的一个奇怪问题吗
非常感谢您提供的任何帮助或建议,我真的不知道在这里该做什么请在运行db.Orders.Add(order)后尝试调用db.SaveChanges()。然后,您可以调用ChangeTracker代码行并再次保存。我相信您遇到了一个并发问题,您添加了一个订单,其中包含一个AspNetUser作为属性,但在保存它之前声明它是不变的。我想把它写下来作为一个答案,但这更多的是一种预感而不是答案。@sjgallen谢谢你的评论。我最初是这样尝试的,但得到了
“违反主键约束'PK_dbo.AspNetUsers'。无法在对象'dbo.AspNetUsers'中插入重复的键。重复的键值是(3197712e-0c39-42ee-a596-6dc390898eb8)。\r\n调用SaveChanges()时,语句已终止。“
”
-看起来它正在尝试将用户添加为新记录,但它们已经存在于数据库中。感谢您的尝试和添加的信息。我将对你们看到的错误做一些研究,可能是一些N+1问题,以防万一这是一个答案。我把问题投了赞成票以帮助你找到答案。我对解决方案很感兴趣。@sjgallen非常感谢,如果我能帮上忙,请告诉我。您看到这个问题/答案了吗?它有几个可能的答案。第二个很有趣,但要全部复习。
CREATE TABLE [dbo].[OrdersAspNetUsers] (
[AspNetUserId] nvarchar(128) NOT NULL FOREIGN KEY references [dbo].[AspNetUsers],
[OrderId] INT NOT NULL FOREIGN KEY references [dbo].[Orders],
primary key (AspNetUserId, OrderId)
)