Если я запускаю приведенный ниже код, я получаю исключение.
Чтобы обновить 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();
РЕШИТЬ !!!
Моя проблема в ассоциации.
У меня 0..1 отношения на обоих концах между ClientUser и AdminUser.
Администратор (0..1) <-> Клиент (0..1)
И я уже назначил этого администратора для другого существующего клиента. Затем я попытался создать нового клиента и назначить этого администратора, и это вызовет ошибки.
Я исправил это, изменив отношения, как показано ниже
Администратор (0..1) <-> Клиент (*)