Linq向实体加入两个表

时间:2011-08-10 02:04:24

标签: c# linq-to-entities

有没有办法'加入'两个数据库表,所以我可以从第一个表中获取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;

1 个答案:

答案 0 :(得分:1)

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

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

您还需要将IncludeAttribute应用于关联,以确保它们被编组到客户端。您可以将该属性应用于涵盖here的“好友”类。

理论上,将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; }
    }
}