【问题标题】:Entity Framework - specifying criteria for related records实体框架 - 指定相关记录的标准
【发布时间】:2011-09-29 05:55:08
【问题描述】:

我是实体框架的新手。 :-)
我有类似以下内容:

主表
------------------------------------
ID:名称:Detail_id:
1 MasterOne 1
2 大师二 2

明细表:
------------------------------------
ID:名称:类型:
1 详细信息_1 1
2 详情_2 1
3 详情_3 2

详细信息表具有区分记录类型的标志(“类型”)。

我的 Master 对象如下所示:

公开课大师
{
公共 int ID { 获取;放; }
公共字符串名称 { 获取;放; }
公共虚拟 IEnumerable<Detail> 详细信息 { 获取;放; }
}

我的主表需要加载它的详细记录,但只有那些带有“1”标志的记录。

我的问题是 IEnumerable Details 属性会提取所有详细记录,而我需要它仅提取类型标志 = 1 的详细记录。

这可能吗?
谢谢!!

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    你可以试试:

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

    【讨论】:

      【解决方案2】:

      假设您使用的是 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 了解更多信息。

      【讨论】:

        猜你喜欢
        • 2013-06-25
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多