gpt4 book ai didi

entity-framework - 在 Entity Framework 中没有数据库调用的情况下从 EntityKey 构造 EntityObject

转载 作者:行者123 更新时间:2023-12-04 08:28:51 24 4
gpt4 key购买 nike

假设我在数据库中有一行我知道一个特定的 id(在我下面的示例中 - 一个 Id = 5 的符号),我可以创建一个 EntityObject 可以附加到另一个实体而无需加载它来自数据库(同样的场景也适用于“DeleteObject”,如果你考虑一下......)?

我试过以下方法:

UserSpread spread = UserSpread.CreateUserSpread(5, 500000, 1.1m, 1.5m);

EntityKey symbolKey = new EntityKey("Entities.SymbolSet", "Id", 5);

Symbol symbol = new Symbol();
symbol.EntityKey = symbolKey;

// dealingEntities.Attach(symbol);

spread.Symbol = symbol;
Entities.AddToSpreadSet(spread);

我在“AddToSpreadSet()”方法中得到以下异常:

"The object cannot be added to the ObjectStateManager because it already has an EntityKey. Use ObjectContext.Attach to attach an object that has an existing key."

如果我尝试在将符号分配给点差(注释行)之前附加符号,我会在“SaveChanges()”方法中得到以下信息:

"The object cannot be attached because the value of a property that is a part of the EntityKey does not match the corresponding value in the EntityKey."

有什么想法吗?
谢谢,
尼尔

最佳答案

我使用的一般方法是只创建一个 stub 实体(通过仅设置 PK)并将其附加到上下文。

举个例子:

Category existing = new Category {ID = 7};
ctx.AttachTo("Categories", existing); // Notice no use of EntityKey anywhere


// build a new product
...
product.Category = existing;
ctx.AddToProducts(product);
ctx.SaveChanges();

这对于建立关系很有效,但在删除时有一些注意事项。所以一定要看看我的 EF tips series想要查询更多的信息。特别是这个:

Tip 9 - How to delete an object without retrieving it

希望对你有帮助

亚历克斯

关于entity-framework - 在 Entity Framework 中没有数据库调用的情况下从 EntityKey 构造 EntityObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/997194/

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