EF:违反PRIMARY KEY约束'dbo.Currency'。无法在对象'dbo.MwbeCurrency'中插入重复键

时间:2015-07-10 14:48:28

标签: entity-framework c#-4.0

我有2个对象PurchaseCurrencyCurrency也是Purchase中的属性)。

现在我正在尝试向数据库中添加一个包含现有Purchase的新Currency。发生错误:

  

违反PRIMARY KEY约束'PK_dbo.Currency'。无法在对象'dbo.Currency'中插入重复键。重复键值为“

当我调用方法SaveChanges时会发生这种情况。

通用存储库类:

public abstract class GenericRepository<TEntity>
{
    public virtual TEntity Add(TEntity entity)
    {
        return DbSet.Add(entity);
    }
}

更新付款的服务方式

payment.UserData = userRepository.Get(userId).Data;
payment.Currency = currencyRepo.FindByCode(mwbepaymentmethod.CurrencyCode);

if (payment.Currency == null)
{
    throw new ValidationException(String.Format("NoCurrencyFoundText", mwbepaymentmethod.CurrencyCode));
}

paymentMethodRepository.Add(payment);
paymentMethodRepository.SaveChanges();

如何标记新对象的某些属性不是新的,并且不应将它们添加到数据库中,只需添加引用。

更新1: 上下文通过Autofac定义为InstancePerRequest:

 builder.RegisterType<MobileWalletContext>().As<IMwbeDbContext>().InstancePerRequest();

0 个答案:

没有答案