实体框架:将实体合并到导航属性中

时间:2009-09-24 15:59:49

标签: c# entity-framework

鉴于这些实体由EF自动生成......(伪)

class CreditCard
{
    int ID {get;set;}
    string Number {get;set;}
}
class Person
{
    EntityCollection<CreditCard> CreditCards {get; set;}
}

将断开连接的List合并到Person的CreditCards属性的最佳方法是什么。

将在基于UserInput的WebForm上构建List。该列表将包含新的CreditCards(添加),对现有CreditCards(更新)的更改,并且不包含用户已删除的CreditCards。

接下来(我需要帮助的挑战)是取出断开连接的List并将其与Person实例的CreditCards属性合并,

合并过程将(A)向列表中添加新实例,(B)更新现有实例和(C)删除断开连接列表中不存在的实例。

是否存在EF设计用于处理此问题的实际方法,还是手动过程?如果是手动的,那么以可以跨实体重用的通用方式实现此目的的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

显然,我来这里的派对已经很晚了,但除非我弄错了,你的信用卡列表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();

我不确定这是否有用,或者是否还有其他需要。