Fluent API C#跨实体查询

时间:2017-05-15 12:55:11

标签: c# linq fluent ef-fluent-api

我有两个表,都定义了主键,两者之间有一个外键。

    Table 1         Table 2

PK  ID           PK ID   
                 FK Table1ID.ID 
    Name            DescriptionId
                    Description

我要做的是按ID恢复所有Table1,但只是Table2的一小部分。

这将恢复表2中ID 300的所有记录。

var option = unitOfWork.Repository<Table1>()
                       .Query(x => x.ID == 300 )
                       .Include(y => y.Table2)
                       .Select()
                       .FirstOrDefault();

我修改了以上内容:

.Query(x => x.ID == 300 && x.Table2.Where(w => w.DescriptionId == 2))

.Include(y => y.Table2.Where(w => w.DescriptionId == 2))

这些都不起作用。

1 个答案:

答案 0 :(得分:0)

您需要执行与以下类似的操作。

var option = unitOfWork.Repository<Table1>()
                       .Query(x => x.ID == 300 )
                       .Include(y => y.Table2)
                       .Select(z => new{Field1 = x.Field1, Field2 = x.Field2, Field3 = y.Field1})
                       .FirstOrDefault();