【发布时间】:2021-01-14 20:38:39
【问题描述】:
当我想更新实体时,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;
我使用了没有异步的 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 并添加新用户,已经存在,我该如何避免这种情况?
【问题讨论】:
标签: c# .net entity-framework .net-5