【问题标题】:EF4 CodeFirst CTP4 - Insert with existing associationEF4 CodeFirst CTP4 - 插入现有关联
【发布时间】:2010-09-04 11:30:45
【问题描述】:

如果我有一个具有关联的实体(例如 Book.Publisher),我如何保存新书并将其与现有 Publisher 关联?

顺便说一句,我不想​​在我的模型中公开 FK 关联(即 PublisherId)。

我一直在使用这样的东西:

var book = new Book { Title="whatever", Publisher = new Publisher { Id = 42 } };
context.Books.Add(book);

但这只是试图添加一个新的发布者。

我看到this question 建议使用 ObjectStateManager.ChangeObjectState,但如果我尝试这样做会出错 - ObjectStateManager 不包含引用“Blah.Publisher”类型对象的 ObjectStateEntry。强>

【问题讨论】:

  • 您能否提供有关您的实施的更多信息?在 ObjectSet 上使用 AddObject 时使用 ObjectStateManager 没有问题。

标签: entity-framework entity-framework-4 code-first ef4-code-only


【解决方案1】:
var pub = new Publisher { Id = 42 };
context.Publishers.Attach(pub);
var book = new Book { Title="whatever", Publisher = pub };
context.Books.Add(book);

【讨论】:

  • 应该是 context.Publishers.Attach(pub) 但感谢一百万。 ObjectStateManager 方法似乎有点过火了。
  • 但这不需要再次访问数据库来加载这些数据吗?我不在乎数据是什么,我只是想引用它!
  • 嗯,这是我宁愿找到文档的东西。最终证明不涉及额外的数据库访问的测试会很复杂。这就是我问的原因。
猜你喜欢
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多