使用EF構建企業級應用 四

2021-09-25 11:00:40 字數 3391 閱讀 3812

本系列目錄:

使用ef構建企業級應用(一):主要講資料庫訪問基類irepository及repository 的實現

使用ef構建企業級應用(二):主要講動態排序擴充套件的實現

使用ef構建企業級應用(三):主要講靈活的構建查詢條件表示式expression>.

使用ef構建企業級應用(四):主要講下在mvc環境中前端開發中如何使用,及乙個例項原始碼包

在前面三篇文章中,我們大致的描述了使用ef如何方便的實現資料持久化,我們簡要的回憶下都有那些關鍵的內容段

那麼前端在使用mvc模式的時候,如何方便將我們前面所實現的銜接起來呢? 我們今天就來**一下這個問題.

我們先來看看我們在實際專案中是如何使用的,如果你對這個寫法有興趣那再往下看(查詢介面我們採用jqgrid來展示資料)

///

/// 查詢產品列表

///

///

public actionresult getproductlist()

catch (exception ex)

return content(json);

}

也許你很快就發現了上述**中有兩個陌生的方法,構建查詢條件及從資料庫獲取資料,我們分別來看一下這兩個方法中都幹了什麼.

/// /// 獲取頁面分頁查詢條件

///

/// 待查詢的實體

/// 頁面查詢轉化型別

///

protected efqueryparamgetqueryparam()

where tentity : class

where tpgqueryexp : class, iefqueryexpression, new()

bool issordasc = false;

if (!string.isnullorempty(request.querystring["sord"]))

}int pagesize = system.convert.toint32(request.querystring["rows"]);

int pageindex = system.convert.toint32(request.querystring["page"]) - 1;

iefqueryexpressionexp = null;

if (!string.isnullorempty(request["d"]))

catch

}if (exp == null)

exp = new tpgqueryexp();

efqueryparamret = new efqueryparam(exp, sidx, issordasc, pageindex, pagesize);

return ret;

}

然後我們來看一下,**中有個陌生的物件pgqueryproductexp,那麼他又做了什麼呢?也許你已經猜到了,這個就是頁面查詢轉化條件的,來簡要的看一下是如何定義的

///

/// 頁面查詢產品條件

///

public class pgqueryproductexp : iefqueryexpression

public string name

public string specification

public guid categoryid

public int enableflag

public pgqueryproductexp()

public expression> getexpression()

return exp.getexpression();

}

其次我們來看一下在sysservice 這個服務層中,我們是如何實現查詢的

///

/// 查詢獲取產品資料

///

/// 查詢引數

/// 返回符合條件的記錄總數

///

public ilistgetproductlist(efqueryparamqueryparam, out int total)

if (lst != null)

lst = lst.select(o => o.getjsonentity()).tolist();

return lst;

}

/// /// 封裝查詢引數

///

/// 引數型別

public abstract class queryparam

/// /// 排序字段

///

public string orderpropertyname

/// /// 是否是公升序排序,為false時則對orderpropertyname採取降序排序

///

public bool isascsort

/// /// 分頁查詢,查詢第幾頁

///

public int pageindex

/// /// 分頁查詢,每頁顯示記錄數

///

public int pagesize

/// /// 指示是否是分頁查詢

///

public bool ispagingquery }

}/// /// ef 實現的 queryparam

///

/// 條件關聯實體型別

public class efqueryparam: queryparam>> where tentity : class

/// /// 例項化新的 efqueryparam 例項

///

/// 查詢條件

/// 排序屬性欄位名

/// 是否是公升序排序,false為降序排序

/// 分頁查詢,查詢第幾頁

/// 分頁查詢,每頁顯示記錄數

public efqueryparam(iefqueryexpressionexp, string orderpropertyname,

bool isascsort, int pageindex, int pagesize) :

this(exp.getexpression(), orderpropertyname, isascsort, pageindex, pagesize)

如何構建企業級的ESB?

1 服務匯流排 esb 適合傳統企業系統應用下系統間的小報文 短訊息同步服務互動場景 服務框架 dubbo 適合網際網路系統應用下系統間的小報文 短訊息同步服務互動場景 如果服務過少,不打算進行服務治理的話,其實無需esb dubbo,直接選擇ws即可。2 mq適合系統間的可靠小報文 短訊息非同步服...

關於Docker的企業級應用

難怪docker正在迅速發展。docker,乙個開源專案。僅僅兩年,docker價值近10億美元,最近獲得了9500萬美元的資金。令人激動的是,我們看到有這麼多開發者對這個專案的熱情。然而,我將在下面討論企業使用docker本身是不夠的。許多企業it團隊解決這兩個問題 首先,開發者和運維者在優先順序...

企業級快取系統varnish應用

隨著公司業務快速發展,公司的電子商務平台已經聚集了很多的忠實粉絲,公司也拿到了投資,這時老闆想通過一場類似雙十一的活動,進行一場大的 屆時會有非常多的粉絲訪問 你的總監與市場部門開完會後,確定活動期間會有平常10倍以上的訪問請求,總監要求大幅增加 容量,除了去擴容伺服器之外,還有沒有其他辦法呢?如今...