我正在嘗試優化我的 Web 應用程式的行為。
我使用介面作為模型的基礎,然后我有控制器,其中使用了該介面中的方法。
為了將更多資料加載到表中,我需要Select對每個繼承介面的模型使用 special(而不是從資料庫中加載所有欄位)。
這是有效的代碼:
public virtual JsonResult DbData(DataTableAjaxPostModel model)
{
var datalist = dbSetForDbData.GetAndSortDataForAJAX(model, true, out int recordsFiltered, out int recordsTotal); //get and sort data
當我想要這樣的東西時:
public virtual JsonResult DbData(DataTableAjaxPostModel model)
{
var dataList = dbSetForDbData.Select(SelectDbData).GetAndSortDataForAJAX(model, true, out recordsFiltered, out recordsTotal); //get and sort data
我想,我會使用這樣的想法:
Expression<Func<T, T>> SelectDbData = input=>IModel<T,TModel>.SelectForModel(input)
IModel<T,TModel>我的界面在哪里。
在界面中我有這個方法:
public override FooModel SelectForModel(FooModel input)
{
return new FooModel
{
Id = input.Id,
Number = input.Number,
...
};
}
但它不起作用(運算式無法翻譯)。
uj5u.com熱心網友回復:
你不應該打破運算式鏈。一切都應該是表達
Expression<Func<T, T>> SelectDbData = IModel<T,TModel>.SelectForModel();
public override Exppression<Func<FooModel, FooModel>> SelectForModel()
{
return input => new FooModel
{
Id = input.Id,
Number = input.Number,
...
};
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515636.html
標籤:。网林克实体框架核心
上一篇:將資料表轉換為串列的通用方法
