我有一个默认的实体框架模型,它包含我的产品的所有默认表,并且所有客户共享。但是,在某些客户中,我有一些只存在于该客户的自定义表格,但它们与默认产品的表格相关。我有第二个实体框架模型来容纳这些自定义表。
我的问题是我如何使用加入使Linq实体查询,所以我可以将我的默认模型的实体与我的自定义模型上的表关联?我不介意没有导航属性从自定义实体到默认模型上的实体;我只需要一种方法来在单个查询中查询两个模型。
下面是代码:将来自2个不同模型的2个不同实体加入到一个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;
}
}
我得到一个The specified LINQ expression contains references to queries that are associated with different contexts
错误。
编辑
我可以合并2 ObjectContext
到第三个,然后运行Linq查询吗? 韩国社交协会
编辑
下面是工作,使用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。
Tks。你有一些链接,以便我可以获得更多关于你建议的方法的信息吗? Tks太多了 – Pascal 2011-01-27 15:42:56