1

我正在使用实体框架,我的数据库的结构是这样的:

一个用户有一组订阅者,所以......

订阅者:名称 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();

如果我删除条件,无论如何都会失败,问题是当我与用户一起加载订阅者时,如果我只加载订阅者,则提交有效。

谢谢!

4

0 回答 0