我正在使用EF Core开发一个代码优先的数据库,在正确处理实体之间的关系时遇到了一些问题。
但是,每当我尝试将现有客户添加到用户列表时,都会出现一个错误,表明该客户已经存在。
var current = GetCustomersByUserId(userId.ToString())?.Select(x => x.Id).ToList();
var toAdd = customers.Where(x => !current.Any(y => y.Equals(x.Id)));
customers.ForEach(x => x.Id = _data.Customers.First(y => y.SalesOrg.Equals(x.SalesOrg) && y.DistributionChannel.Equals(y.DistributionChannel) && y.Division.Equals(x.Division)).Id);
var affil = _data.Users.FirstOrDefault(x => x.Id.Equals(userId));
if (affil == null)
{
affil = new User() { UserId = userId, Customers = customers, Id = Guid.NewGuid() };
_data.Users.Add(affil);
}
else
{
affil.Customers.AddRange(customers);
}
_data.SaveChanges();
return customers;
modelBuilder.Entity<User>()
.HasMany(x => x.Customers);
modelBuilder.Entity<Customer>()
.HasMany(x => x.Users);
在每一个类中,我引用另一个作为属性,如下所示:
public List<Customer> Customers { get; set; }
public List<User> Users { get; set; }