实体框架代码优先 - 通过主键将子实体添加到父实体

Posted

技术标签:

【中文标题】实体框架代码优先 - 通过主键将子实体添加到父实体【英文标题】:Entity Framework Code First - Add Child Entity to Parent by Primary Key 【发布时间】:2011-03-10 19:22:48 【问题描述】:

在实体框架代码优先 CTP5 中,是否可以仅使用子实体的主键将子实体添加到父实体集合?我的目标是避免必须首先从数据存储中加载子实体。

对于奖励积分,这是否可以仅使用父主键和子主键来完成(即根本不加载任何实体)?

【问题讨论】:

【参考方案1】:

在我的脑海中针对 CTP4 编译,所以请注意。

public void AddPersonToList(int id, int toAdd)

  var mailList = new MailList  ID = id, ContactInformations = new List<ContactInformation>() ;
  this.db.MailLists.Attach(mailList);

  var ci = new ContactInformation  ID = toAdd ;
  this.db.ContactInformations.Attach(ci);
  this.db.ObjectStateManager.ChangeRelationshipState(mailList, ci, ml => ml.ContactInformations, System.Data.EntityState.Added);


您需要在保存任何内容之前调用 SaveChanges。

仅使用 ID 附加和实体并与 Statemanager 一起工作在 EF 中效果非常好,并允许您创建一些非常好的解决方案性能明智。

【讨论】:

以上是关于实体框架代码优先 - 通过主键将子实体添加到父实体的主要内容,如果未能解决你的问题,请参考以下文章

如何在实体框架代码优先数据库中手动设置实体主键?

实体框架代码优先:共享主键

实体框架代码优先主键约束名称

实体框架代码优先:迁移失败并更新数据库,强制不必要的(?)添加迁移

实体框架 4.1 代码优先映射到将主键作为外键列的表

实体框架代码优先导航问题