gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:56:00 29 4
gpt4 key购买 nike

我有一个默认的 Entity Framework 模型,其中包含我的产品的所有默认表,并且所有客户都共享该模型。但是,对于某些客户,我有一些仅针对该客户存在的自定义表,但它们与默认产品的表相关。我有第二个 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;
}
}

我收到指定的 LINQ 表达式包含对与不同上下文关联的查询的引用错误。
编辑
我可以将 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(),以便我可以将其数据绑定(bind)到 DataGridView。

最佳答案

您无法在 L2E 中执行此操作。您可以使用 AsEnumerable() 将其带入对象空间,它可以工作,但可能效率低下。

合并 ObjectContext 是可能的,并且可以工作,但需要手动完成。

关于entity-framework - 将来自 2 个不同模型的 2 个不同实体连接到单个 Linq to Entities 查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4817500/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com