以下のコードを実行すると、例外が発生しました。
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();
解決する!!!
私の問題は関連にあります。
ClientUser と AdminUser の間の両端で 0..1 の関係があります。
管理者 (0..1) < -- > クライアント (0..1)
そして、その管理者ユーザーを別の既存のクライアントに既に割り当てています。次に、新しいクライアントを作成してその管理者を割り当てようとすると、エラーが発生します。
以下のように関係を変更して修正しました
管理者 (0..1) < -- > クライアント (*)