Entity framework 将2个不同模型中的2个不同实体连接到单个Linq to实体查询中

Entity framework 将2个不同模型中的2个不同实体连接到单个Linq to实体查询中,entity-framework,entity-framework-4,linq-to-entities,Entity Framework,Entity Framework 4,Linq To Entities,我有一个默认的实体框架模型,它保存我的产品的所有默认表,并且所有客户都共享该模型。但是,在某些客户上,我有一些仅针对该客户的自定义表,但它们与默认产品的表相关。我有第二个实体框架模型来保存这些自定义表。 我的问题是如何使用Join进行Linq到实体查询,以便将默认模型中的实体与自定义模型中的表关联起来?我不介意在默认模型上没有从自定义实体到实体的导航属性;我只需要一种在一个查询中查询两个模型的方法。 代码如下: using (ProductEntities oProductDB = new

我有一个默认的实体框架模型,它保存我的产品的所有默认表,并且所有客户都共享该模型。但是,在某些客户上,我有一些仅针对该客户的自定义表,但它们与默认产品的表相关。我有第二个实体框架模型来保存这些自定义表。
我的问题是如何使用Join进行Linq到实体查询,以便将默认模型中的实体与自定义模型中的表关联起来?我不介意在默认模型上没有从自定义实体到实体的导航属性;我只需要一种在一个查询中查询两个模型的方法。
代码如下:

  using (ProductEntities oProductDB = new ProductEntities())
  {
    using (ProductEntitiesCustom oProductCustomDB = new ProductEntitiesCustom())
    {
      var oConsulta = oProductCustomDB.CTBLCustoms
                .Where(CTBLCustoms => CTBLCustoms.IDWOHD >= 12)
                .Join(oProductDB.TBLResources,
                     CTBLCustoms => new
                       {
                         CTBLCustoms.IDResource
                       },
                     TBLResources => new
                       {
                         TBLResources.IDResource
                       },
                    (CTBLCustoms, TBLResources) => new
                       {
                         IDCustom = CTBLCustoms.IDCustom,
                         Descricao = CTBLCustoms.Descricao,
                         IDWOHD = CTBLCustoms.IDWOHD,
                         IDResource = CTBLCustoms.IDResource,
                         ResourceCode = TBLResources.Code
                       });

      gvwDados.DataSource = oConsulta;
    }
  }
我得到一个
指定的LINQ表达式包含对与不同上下文关联的查询的引用
错误。
编辑
我是否可以将2
ObjectContext
合并为第三个,然后运行Linq查询? Tks

编辑

下面是使用AsEnumerable()建议的解决方案工作的代码:

  using (ProductEntities oProductDB = new ProductEntities())
  {
    using (ProductEntitiesCustom oProductCustomDB = new ProductEntitiesCustom())
    {
      var oConsulta = (oProductCustomDB.CTBLCustoms.AsEnumerable()
                .Where(CTBLCustoms => CTBLCustoms.IDWOHD >= 12)
                .Join(oProductDB.TBLResources,
                     CTBLCustoms => new
                       {
                         CTBLCustoms.IDResource
                       },
                     TBLResources => new
                       {
                         TBLResources.IDResource
                       },
                    (CTBLCustoms, TBLResources) => new
                       {
                         IDCustom = CTBLCustoms.IDCustom,
                         Descricao = CTBLCustoms.Descricao,
                         IDWOHD = CTBLCustoms.IDWOHD,
                         IDResource = CTBLCustoms.IDResource,
                         ResourceCode = TBLResources.Code
                       })).ToList();

      gvwDados.DataSource = oConsulta;
    }
  }

我按照建议添加了
AsEnumerable()
,但我必须在末尾添加
ToList()
,以便将其数据绑定到DataGridView。

在L2E中不能这样做。您可以使用
AsEnumerable()
将其引入对象空间,这样做会起作用,但可能效率低下


合并ObjectContext是可能的,而且会起作用,但需要手动完成。

Tks。你有一些链接,这样我可以得到更多关于你建议的方法的信息吗?太多了