实体框架 - 指定相关记录的标准

时间:2011-07-06 00:45:39

标签: c# entity-framework

我是Entity Framework的新手。 :-)
我有类似以下内容:

主表
------------------------------------
Id:名称:Detail_id:
1 MasterOne 1
2 MasterTwo 2

详细信息表:
------------------------------------
Id:姓名:类型:
1 Detail_1 1
2 Detail_2 1
3详情_3 2

Details表有一个标志('Type'),用于区分记录类型。

我的主对象看起来像这样:

  公共班硕士   {
     public int ID {get;组; }
     public string Name {get;组; }
     public virtual IEnumerable <Detail> Details {get;组; }
  }

My Master表需要加载其详细记录,但只能加载标记为“1”的记录。

我的问题是IEnumerable Details属性会提取所有详细信息记录,而我需要它只用Type标志= 1拉入那些详细记录。

这可能吗?
谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试:

var master = (ctx.Masters.Where(x => x.ID == 1)).FirstOrDefault();
var details = master.Details.Where(x=>x.Type == 1);

答案 1 :(得分:0)

假设您使用的是EF 4.1

如果您只加载1 Master条记录,则可以按如下方式加载已过滤的Details列表。

using (var context = new MyContext())
{
    var master = context.Masters.Find(1);

    context.Entry(master)
        .Collection(m => m.Details)
        .Query()
        .Where(d => d.Type == 1)
        .Load();

    //do stuff with master

}

您可以通过Using DbContext in EF 4.1 Part 6: Loading Related Entities了解详情。