实体未更新

Entities are not updated

当我想更新实体时,EntityFraemwork 出现了一个奇怪的问题。 我有 User 实体和 Searchfilter 实体,它们是一对多关系

public class User : IdentityUser
{
   public virtual List<SearchFilter> SearchFilters { get; set; }
}

public class SearchFilter : BaseEntity, IAggregateRoot
{
   public virtual User User { get; set; }
}

1 - 我创建用户 2 - 我 运行 创建用户并将其添加到 searchfilter

的方法
SearchFilter searchFilter = SearchFilterRepository.AddAsync(new SearchFilter
{
     SearchInDescription = false,
     SearchInTitle = false
 }).Result;
  

我使用了没有异步的结果进行了测试。我认为问题出在 EF 中的异步操作中。 那么:

 searchFilter.User = user;
 SearchFilterRepository.Update(searchFilter);

更新:

public void Update(T entity)
{
    _dbMainContext.Entry(entity).State = EntityState.Modified;
    _dbMainContext.SaveChanges();
}
 

我有一个错误:违反了“PK_AspNetUsers” PRIMARY KEY 约束。无法将重复键插入 dbo.AspNetUsers 对象。重复键值:(0e535b73-7cff-4152-9157-214b9821d264)。 该指令的执行已被中断。

我认为 EF、更新 SearchFilter 和添加新用户已经存在,我该如何避免这种情况?

添加 UserId 属性 并使用它代替引用用户 属性

public class SearchFilter : BaseEntity, IAggregateRoot
{
  public Guid UserId { get; set; }
  public virtual User User { get; set; }
}

然后使用插入或更新

searchFilter.UserId = /* Add User Guid */;
SearchFilterRepository.Update(searchFilter);