hej, witam wszystkich bardzo serdecznie,
javascript:
Dopiero jestem na etapie poznawania Entity Framework i póki co szło całkiem dobrze, ale natrafiłem na problem, na którym trochę utknąłem.
Dla uproszczenia mam tabelę:
public class Transaction
[Key]
public int IDTransaction
[ForeignKey("..")]
public int IDAccount
...
public string Title;
public virtual Account Account;
oraz
public class Account
[Key]
public int IdAccount
...
public string AccountLabel;
Jak wystawiam całą tabelę do API, to nie mam problemu robię _ctx.Transaction(Where...).Include(a=>a.Account) i tak dalej - generuje mi się JSON normalnie z całą strukturą. Zacząłem natomiast pisać obsługę wyszukiwania oraz filtracji i zbudowałem sobie funkcję, która buduje wyrażenia lambda do zapytania na podstawie słownika {"nazwa kolumny", "wartość wyszukiwana}. W momencie, w którym wyszukuję bezpośrednio po tabeli poprzez:
IQueryable<Transaction> query = _context.Transactions.AsQueryable();
query = query.Include(p => p.Account);
query = query.Where(
Filter<Transaction>.GetWheres(
new ColumnFilter("Title", "faktura")));
Wszystko jest OK, natomiast jak próbuję sięgnąć do danych z tabel podrzędnych, jak np:
ColumnFilter("Account.AccountLabel", "ING EUR")));
Wówczas dostaję wyjątek, że atrybutu nie ma w modelu Transactions, po wykonaniu takiego wyrażenia:
Expression columnName = Expression.Property(pe, column.Name);
gdzie pe jest zadeklarowane jako:
ParameterExpression pe = Expression.Parameter(typeof(T), typeof(T).Name);
Debugger pokazuje, że argument przekazywany to rzeczywiście jest typu Projekt.Models.Transaction, a ja nie mam pojęcia jak mam przekazać całą strukturę - razem z pod tabelami. Będę bardzo wdzięczny za wszelkie sugestie.
pozdrawiam
Kal800