Jestem prawie pewny, że wiem, że odpowiedź jest nie, ale jako ostatnia próba dna, myślałem, że zadam to pytanie.Czy można ręcznie zmodyfikować wyrażenie IQueryable?
Używam kod EF pierwszy kwerendy w tabeli w zwykły sposób
_context.Set<Foo>().Where(f => f.Bar == 999);
który tworzy następujące wyrażenie (Właśnie tak napisane to może być źle).
{SELECT
[Extent1].[Test] AS [Test],
[Extent1].[Test2] AS [Test2],
FROM [dbo].[Foo] AS [Extent1]
WHERE 19 = [Extent1].[Bar]}
Teraz możliwe jest ręczne modyfikowanie tego zapytania, aby zmienić nazwę tabeli do, powiedzmy, Foo10? (prawdopodobnie nie)
W przypadku braku tego, czy ktoś wie, w jaki sposób mogę "późno związać" nazwę tabeli w kodzie?
Pewnie zastanawiasz się: "Po co ten brudny hack?" Jak zwykle jest to starszy problem z bazą danych, która ma problemy z projektowaniem i nie można jej zmienić.
Z góry dziękuję.
Ps. Jestem świadomy, że mogę użyć Database.SqlQuery
, ale wolałbym nie.
dlaczego nie masz również tabeli "Foo10" w swoim modelu? – BrokenGlass
Ponieważ technicznie jest to ten sam model rozłożony na wielu tabelach. Tabela, w której znajdują się twoje dane, zależy od parametru –
@mjmcloug, od czego to zależy? – Krizz