更新数据返回无法在对象中插入重复的键行

时间:2012-05-03 18:17:10

标签: entity-framework-4

我正在使用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();

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

谢谢!

0 个答案:

没有答案