【发布时间】:2025-11-23 23:15:02
【问题描述】:
如果我运行下面的代码,就会出现异常。
为了更新 AssociationSet 'x',来自 EntitySet 'x' 的对应实体必须在 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) 客户端 (*)
【问题讨论】:
标签: c# entity-framework entity entity-relationship navigation-properties