我正在使用Entity Framework,我的数据库的结构是这样的:
用户拥有订阅者集合,所以......
订户: 名称 用户身份 用户(导航用户对象)
如果我在没有用户的情况下获得订阅者,我修改“名称”并提交更改并且一切正常,但是如果我获得用户实例化的订阅者,则在CommitAndRefreshChanges中抛出: 无法在对象'dbo.User'中插入具有唯一索引'PK_Email'的重复键行。\ 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();
如果我删除了这个条件,无论如何都会失败,问题是当我向用户加载订阅者时,如果我只加载订阅者,则提交有效。
谢谢!