我有一个客户表,其中有一个名为客户地址的子表。
客户:
CustomerID
Name
IsActive
CustomerAddresses:
CustomerAddressID
CustomerID
Street
City
State
ZipCode
我想用客户地址列表更新客户表,并让它自动删除/添加条目(如果已存在)。
linq to SQL是自动执行此操作还是必须手动完成。
答案 0 :(得分:0)
您必须手动同步。
我不确定这是最好的方法。但这是一个选择:
var preExistentIds = (from x in context.CustomerAddresses select x.CustomerAddressID).ToList();
foreach (var deleted in preExistentIds.Where(x => !newCustomerAddr.Exists(y => y.CustomerAddressID == x)))
{
var entity = new CustomerAddresses { CustomerAddressID = deleted.CustomerAddressID };
context.CustomerAddresses.Attach(entity);
context.Entry(entity).State = EntityState.Deleted;
}
foreach(var item in newCustomerAddr){
var entity = new CustomerAddresses { CustomerAddressID = item.CustomerAddressID };
context.CustomerAddresses.Attach(entity);
entity.Fields = item.Field;
[..]
context.Entry(entity).State = item.CustomerAddressID == 0? EntityState.Added : EntityState.Modified;
}
db.SaveChanges();