Adhesive框架系列文章--Mongodb数据服务使用实践
在此文中,我們會(huì)實(shí)踐一下,如何使用Mongodb數(shù)據(jù)服務(wù)存儲(chǔ)新的自定義數(shù)據(jù)。之前我們說(shuō)過(guò)了,使用Mongodb數(shù)據(jù)服務(wù)只有4步這么簡(jiǎn)單:
1)定義實(shí)體
2)定義元數(shù)據(jù)
3)配置Mongodb數(shù)據(jù)服務(wù)
4)調(diào)用API插入數(shù)據(jù)
在這里,我們希望使用Mongodb存放書籍借閱的信息:
public enum Status{借出 = 1,歸還 = 2,丟失 = 3,}[MongodbPersistenceEntity("Test", DisplayName = "書籍借閱信息", Name = "Book")]public class Book{[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.AscendingAndUnique, IsPrimaryKey = true)][MongodbPresentationItem(ShowInTableView = true, DisplayName = "主鍵")]public string ID { get; set; }[MongodbPersistenceItem(IsTableName = true)][MongodbPresentationItem(DisplayName = "部門", ShowInTableView = true)]public string DeptName { get; set; }[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Descending, IsTimeColumn = true, ColumnName = "T")][MongodbPresentationItem(MongodbSortOption = MongodbSortOption.Descending, DisplayName = "時(shí)間", ShowInTableView = true)]public DateTime ServerTime { get; set; }[MongodbPresentationItem(DisplayName = "書名", ShowInTableView = true)]public string Name { get; set; }[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)][MongodbPresentationItem(DisplayName = "借書者", ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.TextBoxFilter)]public string UserName { get; set; }[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)][MongodbPresentationItem(DisplayName = "狀態(tài)變化", ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.DropDownListFilter)]public Status Status { get; set; }[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)][MongodbPresentationItem(DisplayName = "書籍分類", ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.CheckBoxListFilter)]public string Category { get; set; }[MongodbPresentationItem(DisplayName = "備注")]public string Memo { get; set; }}其中包含:
1)主鍵ID,顯示在表格視圖中,做唯一索引
2)部門名,顯示在表格視圖中,作為表名
3)書名,顯示在表格視圖中
4)時(shí)間,顯示在表格視圖中,倒序排列,倒序索引
5)借書者,顯示在表格視圖中,可以通過(guò)文本框進(jìn)行搜索,索引
6)狀態(tài)變化,顯示在表格視圖中,這是一個(gè)枚舉,可以通過(guò)下拉列表進(jìn)行搜索,索引
7)書籍分類,顯示在表格視圖中,可以通過(guò)復(fù)選框進(jìn)行搜索,索引
8)備注,不顯示在表格視圖中
并且,我們把這個(gè)實(shí)體存放在名為Test的分類中,數(shù)據(jù)庫(kù)名也就是為Test__Book__年月(分庫(kù))。
?
在定義了數(shù)據(jù)之后只需調(diào)用API插入數(shù)據(jù)即可:
var book = new Book(){DeptName = DeptName.SelectedValue,ID = Guid.NewGuid().ToString(),Memo = Memo.Text,UserName = UserName.Text,ServerTime = DateTime.Now,Name = BookName.Text,Status = (Status)Enum.Parse(typeof(Status), Status.SelectedValue),Category = BookCategory.Text};MongodbService.MongodbInsertService.Insert(book);前臺(tái):
部門<asp:DropDownList ID="DeptName" runat="server"><asp:ListItem>Tech</asp:ListItem><asp:ListItem>Sales</asp:ListItem><asp:ListItem>Market</asp:ListItem></asp:DropDownList> 狀態(tài)<asp:DropDownList ID="Status" runat="server"><asp:ListItem>借出</asp:ListItem><asp:ListItem>歸還</asp:ListItem><asp:ListItem>丟失</asp:ListItem></asp:DropDownList> 分類<asp:TextBox ID="BookCategory" runat="server">技術(shù)書</asp:TextBox> 書名<asp:TextBox ID="BookName" runat="server">《喬布斯傳》</asp:TextBox> 借書者<asp:TextBox ID="UserName" runat="server">朱曄</asp:TextBox> 備注<asp:TextBox ID="Memo" runat="server">是一本好書</asp:TextBox>?
之前我們說(shuō)過(guò),為了安全考慮,如果要把數(shù)據(jù)提交到Mongodb數(shù)據(jù)服務(wù)中,必須在配置服務(wù)中進(jìn)行配置,把類型注冊(cè)進(jìn)去,打開(kāi)配置后臺(tái):
進(jìn)入全局配置中的Mongodb服務(wù)配置(也就是客戶端配置),進(jìn)入配置項(xiàng)列表,增加一項(xiàng):
名字填寫類型的完整名,比如Adhesive.Test.WebApp.Book,然后修改類型完整名也為Adhesive.Test.WebApp.Book:
這就完成了客戶端的配置,同樣對(duì)于服務(wù)端,進(jìn)入Mongodb服務(wù)端配置節(jié)點(diǎn),再進(jìn)入服務(wù)配置列表
增加一項(xiàng),命名為Adhesive.Test.WebApp.Book,然后修改類型完整名也為Adhesive.Test.WebApp.Book:
這里大部分配置和客戶端配置差不多,可以從“是否提交到數(shù)據(jù)庫(kù)”這個(gè)配置看出這是服務(wù)端的配置。并且可以看到,服務(wù)端使用8個(gè)線程來(lái)提交數(shù)據(jù),而客戶端只有一個(gè)線程。
至此,我們就可以打開(kāi)前臺(tái)提交數(shù)據(jù)了:
插入一些數(shù)據(jù)后到后臺(tái)查看:
點(diǎn)擊進(jìn)入列表視圖:
我們插入了三條記錄,由于我們?cè)诹猩隙x過(guò)搜索的規(guī)則,我們可以打開(kāi)高級(jí)數(shù)據(jù)篩選:
比如,我們只查看狀態(tài)變化是借出的記錄:
我們?cè)偬砑訋讞l記錄,借書者其它名字:
來(lái)嘗試搜索一下陳鋒借出書籍的記錄:
結(jié)果正式我們需要的!
?
當(dāng)然,分組統(tǒng)計(jì)和數(shù)據(jù)量統(tǒng)計(jì)功能也同樣可用:
?
數(shù)據(jù)想怎么看就怎么看!
?
不需要考慮數(shù)據(jù)提交時(shí)的異步隊(duì)列、不需要考慮數(shù)據(jù)的索引、不需要考慮數(shù)據(jù)的分表分庫(kù)、不需要考慮數(shù)據(jù)呈現(xiàn)后臺(tái)、不需要考慮實(shí)現(xiàn)配置,只需要寫自己的業(yè)務(wù)邏輯代碼,一切交給Mongodb數(shù)據(jù)服務(wù)。其實(shí)Mongodb數(shù)據(jù)服務(wù)主要用來(lái)存對(duì)內(nèi)的非業(yè)務(wù)邏輯的日志、統(tǒng)計(jì)和狀態(tài)數(shù)據(jù),因?yàn)橥ㄓ玫臄?shù)據(jù)后臺(tái)完全可以滿足我們的需求。在下一篇文章中,我們會(huì)介紹如何針對(duì)新的數(shù)據(jù)進(jìn)行報(bào)警的配置。
總結(jié)
以上是生活随笔為你收集整理的Adhesive框架系列文章--Mongodb数据服务使用实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用Live Writer和NNTP B
- 下一篇: 地址栏中的问号有什么作用