【发布时间】:2013-07-05 14:34:04
【问题描述】:
我没有删除实体。我只是通过 IsDeleted 属性对其进行签名。问题是当我得到一个父元素时,即使 IsDeleted 属性为真或假,它的所有子元素也会被加载。然后我做了类似下面的事情,但我想知道有没有更好的方法呢?
var result = from p in context.Set<Product>().Include(x => x.Reviews)
select new
{
Product = x,
ProductReviews = x.ProductReviews.Where(y => !y.IsDeleted)
};
var products = new List<Product>();
foreach (var product in result.OrderBy(x => x.Product.Id).Skip(skipRecords).Take(pageSize))
{
var p = new Product();
p = product.Product;
p.ProductReviews = product.ProductReviews.ToList();
products.Add(p);
}
return products;
如何改进这个代码块?
谢谢
【问题讨论】:
-
当你说所有的孩子都加载甚至是真或假时,你是什么意思? where 过滤器不起作用吗?或者它加载或孩子和他们过滤isDeleted?
-
一些子实体被删除,因此 IsDeleted 属性为它们的 1。但我只想在实体的 IsDeleted 属性为 0 时获取。
标签: c# .net entity-framework ef-code-first