连接实体以连接两个表

本文关键字:连接 两个 实体 | 更新日期: 2023-09-27 18:04:54

是否有任何方法可以'连接'两个DB表,以便我可以从第一个表获得ID,然后使用此ID从第二个表获得描述?

例如,下面的查询获取部件ID,但我需要找到该部件ID的描述,以便将描述放入数据网格中。我试图在Web服务器端使用"Include",但在运行时失败。

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应用于关联,以确保它们被编组到客户端。你可以把这个属性应用到一个'Buddy'类中,这里会讲到。

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

下一个选择是在局部类中。在那里添加具有相同签名的另一个属性(以便可以将属性应用于它)将导致与原始属性的冲突。

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

下面的代码将确保在发送到客户端时包含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; }
    }
}