Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
延迟加载的POCO实体、实体框架和WCF如何协同工作?_Wcf_Linq To Entities_Lazy Loading - Fatal编程技术网

延迟加载的POCO实体、实体框架和WCF如何协同工作?

延迟加载的POCO实体、实体框架和WCF如何协同工作?,wcf,linq-to-entities,lazy-loading,Wcf,Linq To Entities,Lazy Loading,如果一个项目对实体使用POCO,并使用实体框架和延迟加载,那么您将得到一个“不完整”的对象图。那么,当客户机使用实体时,是否有某种代理自动加载剩余值?我们必须自己创建这个代理并将原始实体包装在其中吗?或者,是否有一种可接受的模式用于识别延迟加载类型,然后向客户端发送信号以再次调用WCF?使用平面DTO,您可能无论如何都不想向客户端公开您的整个域。WCF是基于消息的,而不是域驱动的。使用平面DTO,您可能不想向客户端公开您的整个域。WCF是基于消息的,而不是域驱动的。使用WCF的延迟加载通常不起作

如果一个项目对实体使用POCO,并使用实体框架和延迟加载,那么您将得到一个“不完整”的对象图。那么,当客户机使用实体时,是否有某种代理自动加载剩余值?我们必须自己创建这个代理并将原始实体包装在其中吗?或者,是否有一种可接受的模式用于识别延迟加载类型,然后向客户端发送信号以再次调用WCF?

使用平面DTO,您可能无论如何都不想向客户端公开您的整个域。WCF是基于消息的,而不是域驱动的。

使用平面DTO,您可能不想向客户端公开您的整个域。WCF是基于消息的,而不是域驱动的。

使用WCF的延迟加载通常不起作用,因为您的方法如下所示:

public List<MyPoco> GetData()
{
  using (var context = new MyObjectContext())
  {
    return context.MyPocos.ToList();
  }
}
public List GetData()
{
使用(var context=new MyObjectContext())
{
返回context.MyPocos.ToList();
}
}

正如您看到的,上下文在方法中是关闭的(您必须在某个地方关闭上下文)。但是当列表被序列化时,它将尝试延迟加载依赖对象=>exception,因为上下文已经关闭。在WCF中,您应该使用即时加载。

使用WCF的延迟加载通常不起作用,因为您的方法如下所示:

public List<MyPoco> GetData()
{
  using (var context = new MyObjectContext())
  {
    return context.MyPocos.ToList();
  }
}
public List GetData()
{
使用(var context=new MyObjectContext())
{
返回context.MyPocos.ToList();
}
}

正如您看到的,上下文在方法中是关闭的(您必须在某个地方关闭上下文)。但是当列表被序列化时,它将尝试延迟加载依赖对象=>exception,因为上下文已经关闭。在WCF中,您应该使用即时加载。

…即使上下文没有关闭,这仍然是一个坏主意。延迟加载对于分布式对象来说太过健谈。我们的问题是,我们有一些帐户有数千行项目。除非有人要求,否则我们不想跨线路序列化它。因此,您需要两个操作。一个有物品,一个没有items@uriDium您可以使用EF上的筛选器表达式来限制记录计数。然后,如果客户端需要,在服务上实现某种形式的分页功能,用于其他记录请求……即使上下文没有关闭,这仍然是一个坏主意。延迟加载对于分布式对象来说太过健谈。我们的问题是,我们有一些帐户有数千行项目。除非有人要求,否则我们不想跨线路序列化它。因此,您需要两个操作。一个有物品,一个没有items@uriDium您可以使用EF上的筛选器表达式来限制记录计数。然后在服务上实现某种形式的分页功能,以便在客户机需要时进行其他记录请求。