Entity framework EF4 CodeFirst CTP4-插入现有关联

Entity framework EF4 CodeFirst CTP4-插入现有关联,entity-framework,entity-framework-4,code-first,ef4-code-only,Entity Framework,Entity Framework 4,Code First,Ef4 Code Only,如果我有一个具有关联的实体(例如Book.Publisher),如何保存新书并将其与现有出版商关联 顺便说一句,我不想在我的模型中公开FK关联(即PublisherId)。 我一直在用这样的东西: var book = new Book { Title="whatever", Publisher = new Publisher { Id = 42 } }; context.Books.Add(book); 但这只是试图添加一个新的发布者 我看到哪个建议使用ObjectStateManager.

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

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

我一直在用这样的东西:

var book = new Book { Title="whatever", Publisher = new Publisher { Id = 42 } };
context.Books.Add(book);
但这只是试图添加一个新的发布者


我看到哪个建议使用ObjectStateManager.ChangeObjectState,但如果我尝试此操作,就会出现错误-ObjectStateManager不包含引用类型为“Blah.Publisher”的对象的ObjectStateEntry。

您能提供有关实现的更多信息吗?在ObjectSet上使用AddObject时,使用ObjectStateManager没有问题。应该是context.publisher.Attach(pub),但非常感谢。ObjectStateManager方法似乎有点过火,但这不需要再次访问数据库来加载数据吗?我不在乎数据是什么,我只想引用它!嗯,这是我更愿意在上面找到文档的一种东西。最终证明不涉及额外的数据库访问的测试将是复杂的。这就是我为什么要问的原因。@uosɐ383;
var pub = new Publisher { Id = 42 };
context.Publishers.Attach(pub);
var book = new Book { Title="whatever", Publisher = pub };
context.Books.Add(book);