gpt4 book ai didi

c# - 具有临时 EntityKey 值的对象不能附加到对象上下文

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:21 24 4
gpt4 key购买 nike

我正在使用断开连接的 Entity Framework 4 Object Context,感谢之前的一些很棒的帮助,我已经向前迈进了。

现在,我遇到了更多问题。似乎 EF 在执行简单的 CRUD 时似乎会产生不必要的障碍。在这种情况下,父子关系。

在我的情况下,我有一个具有增值税税率的现有增值税代码。我加载它,显示它并允许用户添加更多 VatRates。所以我们最终得到:

VatCode --- VatRate (existing)
+- VatRate (added by user)

使用以下代码保存:

using (SopEntities sopEntities = EntitiesFactory.Create()) {
VatRepository vatRepository = new VatRepository(sopEntities);

foreach (VatRate vatRate in Item.VatRates) {
if (vatRate.EntityKey == null || vatRate.EntityKey.IsTemporary) {
sopEntities.VatRates.Attach(vatRate);
sopEntities.ObjectStateManager.ChangeObjectState(
vatRate,
System.Data.EntityState.Added
);
} else {
sopEntities.VatRates.Attach(vatRate); // exception here
sopEntities.ObjectStateManager.ChangeObjectState(
vatRate,
System.Data.EntityState.Modified
);
}
}

if (IsNew) {
sopEntities.VatCodes.AddObject(Item);
} else {
sopEntities.VatCodes.Attach(Item);
sopEntities.ObjectStateManager.ChangeObjectState(Item,System.Data.EntityState.Modified);
}
vatRepository.SaveChanges();
}

但是,当我保存时出现异常:

An object with a temporary EntityKey value cannot be attached to an object context

我在下面附上了截图:

screenshot

我自己在集合中手动附加/添加 VatRates 以尝试识别有问题的对象。但是,这没有帮助。显示的异常是在 VatCode 中的真实现有 VatRate 上,已经有实体 key 。会不会是 EF 正在将对象图提升到 VatCode 中,然后返回到另一个尚未设置的 VatRate - 因为我还没有设置它?

基本上,如何在断开连接的情况下保存其中包含的增值税代码和增值税税率?

最佳答案

当我发现这个错误时,是因为我的对象在 static 修饰符下并且在另一个上下文中。

您可以检查您的代码以了解这种情况。希望这会有所帮助:)

关于c# - 具有临时 EntityKey 值的对象不能附加到对象上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com