如果一个项目已经使用POCO实体并使用实体框架并使用延迟加载,那么你有一个“不完整”的对象图通过网络返回。因此,当客户端使用实体时,是否有某种代理可以自动加载剩余的值?我们是否必须自己创建此代理并将原始实体包装在其中?或者是否有一个可接受的模式来识别延迟加载的类型,然后它会通知客户端再次调用WCF?
答案 0 :(得分:2)
使用WCF进行延迟加载通常不起作用,因为您的方法如下所示:
public List<MyPoco> GetData()
{
using (var context = new MyObjectContext())
{
return context.MyPocos.ToList();
}
}
如您所见,上下文在方法中已关闭(您必须在某处关闭上下文)。但是当列表被序列化时,它将尝试延迟加载依赖对象=&gt;异常,因为上下文已经关闭。在WCF中,您应该使用预先加载。
答案 1 :(得分:1)
使用平面DTO,您可能不希望将完整域名公开给客户端。 WCF是基于消息的,而不是域驱动的。