我正在使用实体框架,我的数据库的结构是这样的:
一个用户有一组订阅者,所以......
订阅者:名称 UserId 用户(在用户对象上导航)
如果我在没有用户的情况下获得订户,我会修改“名称”并提交更改并且一切正常,但是如果我在 CommitAndRefreshChanges 中获得用户实例化的订户,则会抛出我:无法在对象中插入重复的键行具有唯一索引 'PK_Email' 的 dbo.User'。\r\n语句已终止
但我没有为用户改变任何东西......我做错了什么?
要获取我在存储库上运行的订阅者:
RegistrationModuleDataModelContainer context = UnitOfWork as RegistrationModuleDataModelContainer;
Subscriber subscriber = (from s in context.Subscribers.Include(it=>it.User)
where s.IdSubscriber == idSubscriber
select s).FirstOrDefault();
要修改数据,请使用以下代码:
Subscriber subscriber = this.GetSubscriberWithUser(idSubscriber);
subscriber.FirstName = FirstName;
subscriber.LastName = LastName;
//Condition with subscriber.User.x
subscriber.Email = Email;
_subscriberRepository.Modify(subscriber);
IUnitOfWork unitOfWork = _subscriberRepository.UnitOfWork;
unitOfWork.CommitAndRefreshChanges();
如果我删除条件,无论如何都会失败,问题是当我与用户一起加载订阅者时,如果我只加载订阅者,则提交有效。
谢谢!