最近,我们关闭了实体框架的延迟加载和代理生成。在此之前,在我们对EF进行了新的更改之后,我们会收到整个对象图。我现在正在做的是,在提交之后,我调用存储库上的FindById方法来获取新对象(我将导航属性包含在newley创建的对象中)。我的问题是,这是创建后的标准做法,还是客户端应该负责第二次调用服务以获取新创建的对象?在使用Service和Entity Framework 4.1时保存并返回新创建的对象?
public SomeObject Create(SomeObject someObject)
{
_repository.Add(someObject);
_repository.UnitOfwork.Commit()
//this did not exist when lazy loading and proxy generation were enabled.
var newObject = _repository.FindById(someObject.Id);
return newObject;
//Before we would jsut return the created object because everything was loaded.
//return someObject
}
我只是想知道这是否是一个最佳实践的对象与延迟加载和代理的创建禁用创建后:在服务
保存方法。我很想知道其他开发人员如何处理这个问题。
我不明白你为什么要加载你刚刚保存,而且还有在手的对象。如果'FindById'使用'Commit'使用的同一个上下文,'newObject'只会引用与'someObject'相同的对象,它仍然与上下文相连。我的猜测是你的问题与加载导航属性有关,但对我而言并不明确。 FindById是否包含所有导航属性的Include属性,这些导航属性应该取代以前的惰性加载? – Slauma 2012-03-28 13:13:11
@Slauma,你对包含和导航属性是正确的。我确实想在提交后加载导航属性。 – DDiVita 2012-03-28 18:47:24