【发布时间】:2012-05-09 02:15:41
【问题描述】:
我很好奇如何创建一个可由 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 经常需要重新创建
【问题讨论】:
-
您需要创建一个从类别到父级的导航属性,如外键
-
嗨冷告诉,对不起,我不确定你的意思。已经有外键(否则EF不会创建Category1)
-
您是否真正查看过 Model.Designer.cs 和/或 Reflector 中的
Category1以查看其定义中添加了哪些属性或其他工具? -
是的,但我不明白,我尝试复制它们但没有用
标签: c# .net entity-framework linq-to-entities