c# - Entity Framework : Merge Entities into Navigation Property

标签 c# entity-framework

鉴于这些由 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/

相关文章:

c# - 通过引用从 c# COM Visible 类中的 c# 方法返回 vb 变体

c# - 在日志条目中表示持续时间的最佳方式

c# - 等待后任务继续不工作

c# - ADO.NET Entity Framework 的内部类

linq - 使用 LINQ 将所有元素连接在字符串中

c# winforms - 子窗体上的不可访问控件

c# - 如何模拟执行复杂 Entity Framework LINQ 查询的对象?

c# - Entity Framework 6 Code First 插入时的默认日期时间值

mysql - 在 MVC Entity Framework 6 的 Controller 中使用存储的 MySQL 过程从多个表获取结果

c# - 寻呼机 HTML 查看器