实体框架6过滤子对象
Posted
技术标签:
【中文标题】实体框架6过滤子对象【英文标题】:Entity framework 6 filter child object 【发布时间】:2015-03-10 20:17:33 【问题描述】:我正在尝试使用 EF6 从数据库中获取数据。 我有两节课
public class Manufacturer
public int Id get;set;
public string Name get;set;
public bool Enabled get;set;
public virtual IList<Product> Products get;set;
public class Product
public int Id get;set;
public string Name get;set;
public bool Enabled get;set;
public virtual Manufacturer Manufacturer get;set;
我只需要获得已启用产品的已启用制造商 我尝试了以下方法:
var results = _context.Manufacturer
.Where(m => m.Enabled)
.Where(m => m.Products.Any(p => p.Enabled))
.Select(m => new
Manufacturer = m;
Product = m.Products.Where(p => p.Enabled)
);
不幸的是,子对象没有被填充。 “产品”列表总是充满未“启用”的产品 有什么想法吗?
【问题讨论】:
您不能使用导航属性来访问相关实体的子集。 我害怕这样的事情。我将使用 Dapper 进行基本数据访问 【参考方案1】:你可以反过来。也尝试包含相关对象。
var r = context.Products.Include("Manufacturer")
.Where(p=>p.Enabled && p.Manufacturer.Enabled);
【讨论】:
【参考方案2】:你可以这样做。但我检查了你的代码,它也可以工作。我不知道您为什么没有启用产品...
var manufacturers = (from o in _context.Manufacturer
where o.Enabled
select
new
manufacturers = o,
products = o.Products.Where(c=>c.Enabled).ToList()
).ToList();
【讨论】:
以上是关于实体框架6过滤子对象的主要内容,如果未能解决你的问题,请参考以下文章