gpt4 book ai didi

c# - 如何保存与现有实体有父关系的新实体?

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

如果我运行下面的代码,我会得到一个异常。

In order to update the AssociationSet 'x', the corresponding entity from EntitySet 'x' must be available in the ObjectStateManager.

这是我的代码。无论我是否将客户端添加到用户实体集,我仍然会收到错误。

        MyDBEntities db = new MyDBEntities();
//create new client entity
ClientUser client = new ClientUser();
client.UID = 9;
client.UserName = "KKL";
client.CompanyName = "KKL Company";

//retrieve existing entity
AdminUser admin = db.Users.OfType<AdminUser>().FirstOrDefault();
//assign AdminUser of new client to existing admin
client.AdminUser = admin;

//db.Users.AddObject(client);
db.SaveChanges();

我尝试先保存新实体,然后添加关系并再次保存。但它显示相同的错误消息。 :(

        MyDBEntities db = new MyDBEntities();
//create new client entity
ClientUser client = new ClientUser();
client.UID = 9;
client.UserName = "KKL";
client.CompanyName = "KKL Company";

//first save the new object
db.Users.AddObject(client);
db.SaveChanges();

//retrieve existing entity
AdminUser admin = db.Users.OfType<AdminUser>().FirstOrDefault();
client.AdminUser = admin;

db.SaveChanges();

解决!!!

我的问题是联想。

我在 ClientUser 和 AdminUser 之间的两端都有 0..1 关系。

管理员 (0..1) < --> 客户端 (0..1)

而且我已经将该管理员用户分配给另一个现有客户。然后我尝试创建新客户端并分配该管理员,但它引发了错误。

我通过如下更改关系来修复它

管理员 (0..1) < --> 客户端 (*)

最佳答案

如果您使用的是 poco 对象,问题将出在您创建 ClientUser 的方式上。您需要在当前上下文中创建新的 ClientUser:

ClientUser client = _myObjectContext.CreateObject<ClientUser>();

关于c# - 如何保存与现有实体有父关系的新实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8411608/

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