Jestem ciekawy, jak utworzyć właściwość, którą można przetłumaczyć przez LINQ. Poniżej jest bardzo prosty przykład.Tworzenie właściwości, którą LINQ do jednostek może przetłumaczyć
Mam tabeli/klasy Category
, który ma kolumnę ParentId
linkami do siebie (tak, to kategoria może mieć podkategorii)
EF automatycznie generuje własność Category1
, która jest kategoria nadrzędna.
Dla jasności, stworzyłem inną nieruchomość
public partial class Category
{
public Category Parent
{
get { return Category1; }
}
}
Problemem jest, to działa
var categs = ctx.Categories.Where(x => x.Category1 == null);
ale to nie działa
var categs = ctx.Categories.Where(x => x.Parent == null);
określony element typu "Parent" nie jest obsługiwany w LINQ do Entities. Obsługiwane są tylko inicjatory, elementy encji i właściwości nawigacji jednostki.
Czy istnieje sposób utworzenia właściwości do przetłumaczenia (LINQ do SQL) bez wykonywania funkcji .ToList()?
EDIT: chcę, aby uniknąć dotykania Model.edmx ponieważ baza danych często zmienia się w trakcie rozwoju i .edmx często musi zostać odtworzone
Musisz utworzyć właściwość nawigacji z kategorii na rodzica jak klucz obcy –
Cześć Zimno Powiedziałem, przepraszam Nie jestem pewien co masz na myśli. Istnieje już klucz obcy (w przeciwnym razie EF nie utworzy kategorii 1) – Aximili
Czy rzeczywiście spojrzałeś na "Kategorię1" w Model.Designer.cs i/lub Reflektor, aby zobaczyć jakie atrybuty lub inne akcesoria zostały dodane do jej definicji? –