Tengo curiosidad sobre cómo crear una propiedad que LINQ pueda traducir. A continuación se muestra un ejemplo muy simple.Crear una propiedad que LINQ to Entities puede traducir
Tengo una tabla/clase Category
, que tiene una columna ParentId
ligarse a sí mismo (lo tanto, una categoría puede tener sub-categorías)
EF genera automáticamente una propiedad Category1
, que es la categoría padre.
En aras de la claridad, he creado otra propiedad
public partial class Category
{
public Category Parent
{
get { return Category1; }
}
}
El problema es que esto funciona
var categs = ctx.Categories.Where(x => x.Category1 == null);
pero esto no funciona
var categs = ctx.Categories.Where(x => x.Parent == null);
El el miembro de tipo especificado 'Padre' no es compatible en LINQ to Entities. Solo se admiten inicializadores, miembros de entidades y propiedades de navegación de entidades.
¿Hay alguna manera de crear una propiedad traducible (LINQ to SQL) sin hacer .ToList()?
EDIT: Quiero evitar tocar Model.edmx porque la base de datos a menudo cambia durante el desarrollo y la .edmx menudo tiene que ser recreada
Necesita crear una propiedad de navegación de la categoría a principal como clave foránea –
Hola Cold Told, lo siento, no estoy seguro de lo que quiere decir. Ya hay una clave externa (De lo contrario, EF no creará la Categoría1) – Aximili
¿De verdad ha mirado 'Category1' en Model.Designer.cs y/o Reflector para ver qué atributos u otra parafernalia se agrega a su definición? –