鉴于这些由 EF 自动生成的实体...(伪)
class CreditCard
{
int ID {get;set;}
string Number {get;set;}
}
class Person
{
EntityCollection<CreditCard> CreditCards {get; set;}
}
将断开连接的 List 合并到 Person 的 CreditCards 属性的最佳方法是什么。
List 将基于 UserInput 在 WebForm 上构建。该列表将包含新信用卡(添加)、对现有信用卡的更改(更新),并且不会包含用户已删除的信用卡。
下一步(我需要帮助的挑战)是获取断开连接的列表并将其与 Person 实例的 CreditCards 属性合并,
该合并过程将 (A) 将新实例添加到列表,(B) 更新现有实例,以及 (C) 删除断开连接列表中不存在的实例。
EF 是否有一种事实上的方式来处理这个问题,或者它是一个手动过程?如果是手动操作,以可跨实体重复使用的通用方式实现此目的的最佳方法是什么?
最佳答案
显然,我来这里参加派对已经很晚了,但除非我弄错了,否则你的信用卡 list 在哪里,creditCardList
, 类型为 List<CreditCard>
,你想要的将类似于:
Person yourPerson = Context.Persons
.Include("CreditCards")
.First<Person>(p => p.PersonId == yourPersonId);
yourPerson.CreditCards.Clear();
creditCardList.ForEach(cc => yourPerson.CreditCards.Add(cc));
Context.SaveChanges();
我不确定这是否行不通,或者您是否还需要其他东西。
关于c# - Entity Framework : Merge Entities into Navigation Property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472640/