在此文中,我們會實踐一下,如何使用Mongodb資料服務儲存新的自訂資料。之前我們說過了,使用Mongodb資料服務只有4步這麼簡單:
1)定義實體
2)定義中繼資料
3)配置Mongodb資料服務
4)調用API插入資料
在這裡,我們希望使用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 = "時間", 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 = "狀態變化", 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)時間,顯示在表格視圖中,倒序排列,倒序索引
5)借書者,顯示在表格視圖中,可以通過文字框進行搜尋,索引
6)狀態變化,顯示在表格視圖中,這是一個枚舉,可以通過下拉式清單進行搜尋,索引
7)書籍分類,顯示在表格視圖中,可以通過複選框進行搜尋,索引
8)備忘,不顯示在表格視圖中
並且,我們把這個實體存放在名為Test的分類中,資料庫名也就是為Test__Book__年月(分庫)。
在定義了資料之後只需調用API插入資料即可:
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);
前台:
部門 <asp:DropDownList ID="DeptName" runat="server"> <asp:ListItem>Tech</asp:ListItem> <asp:ListItem>Sales</asp:ListItem> <asp:ListItem>Market</asp:ListItem> </asp:DropDownList> 狀態 <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">技術書</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>
之前我們說過,為了安全考慮,如果要把資料提交到Mongodb資料服務中,必須在佈建服務中進行配置,把類型註冊進去,開啟配置後台:
進入全域配置中的Mongodb服務配置(也就是用戶端配置),進入配置項列表,增加一項:
名字填寫類型的完整名,比如Adhesive.Test.WebApp.Book,然後修改類型完整名也為Adhesive.Test.WebApp.Book:
這就完成了用戶端的配置,同樣對於服務端,進入Mongodb服務端配置節點,再進入服務配置列表
增加一項,命名為Adhesive.Test.WebApp.Book,然後修改類型完整名也為Adhesive.Test.WebApp.Book:
這裡大部分配置和用戶端配置差不多,可以從“是否提交到資料庫”這個配置看出這是服務端的配置。並且可以看到,服務端使用8個線程來提交資料,而用戶端只有一個線程。
至此,我們就可以開啟前台提交資料了:
插入一些資料後到後台查看:
點擊進入列表視圖:
我們插入了三條記錄,由於我們在列上定義過搜尋的規則,我們可以開啟進階資料篩選:
比如,我們只查看狀態變化是借出的記錄:
我們再添加幾條記錄,借書者其它名字:
來嘗試搜尋一下陳鋒借出書籍的記錄:
結果正式我們需要的!
當然,分組統計和資料量統計功能也同樣可用:
資料想怎麼看就怎麼看!
不需要考慮資料提交時的非同步隊列、不需要考慮資料的索引、不需要考慮資料的分表分庫、不需要考慮資料呈現後台、不需要考慮實現配置,只需要寫自己的商務邏輯代碼,一切交給Mongodb資料服務。其實Mongodb資料服務主要用來存對內的非商務邏輯的日誌、統計和狀態資料,因為通用的資料後台完全可以滿足我們的需求。在下一篇文章中,我們會介紹如何針對新的資料進行警示的配置。