繁体   English   中英

Linq 以实体连接两个表

[英]Linq to entities to join two tables

有没有办法“加入”两个数据库表,这样我就可以从第一个表中获取 ID,然后使用这个 ID 从第二个表中获取描述?

例如,以下查询获取零件 ID,但我需要找到此零件 ID 的描述,以便我可以将描述放到数据网格中。 我尝试在 Web 服务器端使用“包含”,但在运行时失败。

var query = myContext.Get_Table1();
query = query.Where(c => c.Part_ID == '12345');
LoadOperation<My.Web.Table1> loadOp = this.maxContextTransactionHistory.Load(query, QueryCompletedCallback, null);
this.dataGrid.ItemsSource = loadOp.Entities;

我认为您正在使用 WCF RIA 服务? 如果您标记了您的问题以表明这一点,那将会很有帮助。

如果是这种情况,您将需要使用DomainService中的Include方法将相关实体包含在查询结果中。

您还需要将IncludeAttribute应用于关联以确保将它们编组到客户端。 您可以将该属性应用于此处介绍的“好友”class。

理论上,将 IcludeAttribute 直接应用于生成的实体类中的属性就足够了。 在那里,它们将被覆盖。

下一个选择是部分 class。 在此处添加具有相同签名的另一个属性(以便可以将属性应用于它)会导致与原始属性发生冲突。

解决方案是使用在部分 class 中定义的新 class。 MetadataType 属性用于部分 class 以指示定义其元数据的 class。

以下代码将确保 Part_Stock 的 Part_Table 在发送到客户端时包含在内。 您将需要类似的代码来涵盖您感兴趣的任何其他属性。

[MetadataTypeAttribute(typeof(Part_Stock.Metadata))]
public partial class Part_Stock
{

    internal sealed class Metadata
    {
        // Metadata classes are not meant to be instantiated.
        private Metadata()
        {
        }

        [Include]
        public EntityCollection<Stock_Table> Stock_Table { get; set; }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM