我很好奇如何创建一个可以由 LINQ 翻译的属性。下面是一个非常简单的例子。
我有一个表/类Category
,它有一个ParentId
链接到自身的列(所以一个类别可以有子类别)
EF 自动生成一个属性Category1
,它是父类。
为了清楚起见,我创建了另一个属性
public partial class Category
{
public Category Parent
{
get { return Category1; }
}
}
问题是,这行得通
var categs = ctx.Categories.Where(x => x.Category1 == null);
但这不起作用
var categs = ctx.Categories.Where(x => x.Parent == null);
LINQ to Entities 不支持指定的类型成员“父级”。仅支持初始化程序、实体成员和实体导航属性。
有没有办法在不执行 .ToList() 的情况下创建可翻译的属性(LINQ to SQL)?
编辑:我想避免接触 Model.edmx,因为数据库在开发过程中经常发生变化,并且 .edmx 经常需要重新创建