我是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拉入那些详细记录。
这可能吗?
谢谢!
答案 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了解详情。