Entity Framework Code First - 通过主键将子实体添加到父实体

发布于 2024-10-21 04:32:20 字数 135 浏览 2 评论 0原文

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

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

In Entity Framework Code First CTP5 is it possible to add a child entity to a parent entity collection using only the primary key of the child? My goal is to avoid having to first load the child entity from the data store.

For bonus points, can this be accomplished using only the parent and child primary keys (i.e. without loading any entities at all)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

緦唸λ蓇 2024-10-28 04:32:20

在我的脑海中针对 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 中效果非常好,并且允许您在性能方面创建一些非常好的解决方案。

Compiled in my head against CTP4 so be aware.

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);

}

You need to call a SaveChanges before anything is persisted.

Attaching and entity with only a ID and working with the Statemanager works really well in EF and allows you to create some really nice solutions performance wise.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文