如果我运行下面的代码,我有一个例外。
为了更新AssociationSet'x',EntitySet'x'中的相应实体必须在ObjectStateManager中可用。
这是我的代码。无论我是否将客户端添加到Users实体集,我仍然会收到错误。
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();
SOLVE !!!
我的问题是关联的。
我在ClientUser和AdminUser之间的两端都有0..1的关系。
管理员(0..1)&lt; - &gt;客户(0..1)
我已将该管理员用户分配给另一个现有客户端。然后我尝试创建新客户端并分配该管理员并引发错误。
我通过改变下面的关系来修复它
管理员(0..1)&lt; - &gt;客户(*)
答案 0 :(得分:0)
如果您正在使用poco对象,问题将与您创建ClientUser的方式有关。您需要在当前上下文中创建新的ClientUser:
ClientUser client = _myObjectContext.CreateObject<ClientUser>();