Что происходит за кулисами, когда я включаю функцию в свой скомпилированный запрос, как я это делаю с DataConvert. ToThema () здесь, чтобы преобразовать объект таблицы в мой собственный бизнес-объект:
public static class Queries
{
public static Func<MyDataContext, string, Thema> GetThemaByTitle
{
get
{
var func = CompiledQuery.Compile(
(MyDataContext db, string title) =>
(from th in elan.tbl_Thema
where th.Titel == title
select DataConvert.ToThema(th)).Single()
);
return func;
}
}
}
public static class DataConvert
{
public static Thema ToThema(tbl_Thema tblThema)
{
Thema thema = new Thema();
thema.ID = tblThema.ThemaID;
thema.Titel = tblThema.Titel;
// and some other stuff
return thema;
}
}
и вызвать его так
Thema th = Queries.GetThemaByTitle.Invoke(db, "someTitle");
По-видимому, функция не переведена в SQL или что-то в этом роде (как это могло быть), но она также не выполняется, когда Я установил там точку останова в VS2010.
Он работает без проблем, но я не понимаю, как и почему. Что именно там происходит?