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

Pas*_*cal 2 linq-to-entities entity-framework entity-framework-4

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

  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;
    }
  }
Run Code Online (Sandbox Code Playgroud)

我收到一个The specified LINQ expression contains references to queries that are associated with different contexts错误.
编辑
我可以将2 ObjectContext合并为第三个,然后运行Linq查询?Tks

EDIT

下面是使用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;
    }
  }
Run Code Online (Sandbox Code Playgroud)

AsEnumerable()按照建议添加了,但我必须ToList()在最后添加,以便我可以将它数据绑定到DataGridView.

Cra*_*ntz 6

你不能在L2E中这样做.您可以将它带入对象空间AsEnumerable(),它可以工作,但可能效率低下.

合并ObjectContexts是可行的,并且可以工作,但需要手动完成.