Sono curioso su come creare una proprietà che può essere tradotto da LINQ. Di seguito è un esempio molto semplice.Creazione di una proprietà che LINQ to Entities può tradurre
Ho una tabella/classe di Category
, che ha una colonna ParentId
collega a se stesso (quindi una categoria può avere sotto-categorie)
EF genera automaticamente una proprietà Category1
, che è la categoria principale.
Per motivi di chiarezza, ho creato un'altra proprietà
public partial class Category
{
public Category Parent
{
get { return Category1; }
}
}
Il problema è che questo funziona
var categs = ctx.Categories.Where(x => x.Category1 == null);
ma questo non funziona
var categs = ctx.Categories.Where(x => x.Parent == null);
Il il membro del tipo specificato 'Parent' non è supportato in LINQ alle entità. Sono supportati solo gli inizializzatori, i membri dell'entità e le proprietà di navigazione delle entità.
C'è un modo per creare una proprietà traducibile (da LINQ a SQL) senza fare .ToList()?
EDIT: voglio evitare di toccare Model.edmx perché il database cambia spesso durante lo sviluppo e l'edmx spesso deve essere ricreato
è necessario creare una struttura di navigazione da categoria a genitore come chiave esterna –
Ciao a freddo detto, mi dispiace non sono sicuro di quello che vuoi dire. Esiste già una chiave esterna (altrimenti EF non creerà la Categoria1) – Aximili
Hai effettivamente guardato 'Categoria1' in Model.Designer.cs e/o Reflector per vedere quali attributi o altri accessori sono aggiunti alla sua definizione? –