当实体需要在其中一种方法中创建其他实体时,您如何处理这种情况?我的问题是,由于每个单独的实体都没有访问ObjectContext对象,那个具有AddToBlahs()方法的对象,它无法做到。
例如,拥有一个具有UpdateLinks()方法的Site模型,该方法应该创建属于该站点的Link对象。 UpdateLinks()方法没有ObjectContext。你是做什么?你把它传递给它,就像这样:
public void UpdateLinks(ProjectEntities db) {
foreach (var link in FetchLinks()) {
db.AddToLinks(link);
}
}
还是使用其他模式?
答案 0 :(得分:2)
您不需要上下文。
由于Site.UpdateLinks
正在创建属于该实例的Link
个对象,该实例将与新的Site
建立关联。自动将Link
添加到Site.Links
会使Link
与Site
相同的上下文(如果有)成为新的Site
部分。同样,当您保存Link
时,{{1}}将与其一起保存。
答案 1 :(得分:1)
不确定Craig Stuntz的答案......链接应附加到上下文,但添加链接到Site.Links不会自动附加它。无论如何,你需要做db.AddToLinks(链接)。
但回答你的问题,ObjectContext管理的最佳模式之一可能就是UnitOfWork模式。通过使用它,您可以使实体“自我意识到它们当前所属的范围”。 查看此article以获取详细说明和实施示例。 您仍然可以将ObjectContext作为参数传递给方法,就像您在示例中所做的那样(作为一个更简单的实现)。