MongoDB學習筆記(三) 在MVC模式下經過Jqgrid表格操做MongoDB數據

看到下圖,是經過Jqgrid實現表格數據的基本增刪查改的操做。表格數據增刪改是通常企業應用系統開發的常見功能,不過不一樣的是這個表格數據來源是非關係型的數據庫MongoDB。nosql雖然概念新穎,可是MongoDB基本應用實現起來仍是比較輕鬆的,甚至代碼比基本的ADO.net訪問關係數據源還要簡潔。因爲其自己的「非關係」的數據存儲方式,使得對象關係映射這個環節對於MongoDB來說顯得毫無心義,所以咱們也不會對MongoDB引入所謂的「ORM」框架。

下面咱們將逐步講解怎麼在MVC模式下將MongoDB數據讀取,並展現在前臺Jqgrid表格上。這個「簡易系統」的基本設計思想是這樣的:咱們在視圖層展現表格,Jqgrid相關Js邏輯所有放在一個Js文件中,控制層實現了「增刪查改」四個業務,MongoDB的基本數據訪問放在了模型層實現。下面咱們一步步實現。html

1、實現視圖層Jqgrid表格邏輯

首先,咱們新建一個MVC空白項目,添加好jQuery、jQueryUI、Jqgrid的前端框架代碼:前端

而後在Views的Home文件夾下新建視圖「Index.aspx」,在視圖的body標籤中添加以下HTML代碼:ajax

<div>
    <table id="table1">
    </table>
    <div id="div1">
    </div>
</div>

接着新建Scripts\Home文件夾,在該目錄新建「Index.js」文件,並再視圖中引用,代碼以下:sql

2、實現控制層業務

在Controllers目錄下新建控制器「HomeController.cs」,Index.js中產生了四個ajax請求,對應控制層也有四個業務方法。HomeController代碼以下:mongodb

001 public class HomeController : Controller
002 {
003     UserModel userModel = new UserModel();
004     public ActionResult Index()
005     {
006         return View();
007     }
008  
009     /// <summary>
010     /// 獲取所有用戶列表,經過json將數據提供給jqGrid
011     /// </summary>
012     public JsonResult UserList(string sord, string sidx, string rows, string page)
013     {
014         var list = userModel.FindAll();
015         int i = 0;
016         var query = from u in list
017                     select new
018                     {
019                         id = i++,
020                         cell = new string[]{
021                             u["UserId"].ToString(),
022                             u["UserName"].ToString(),
023                             u["Age"].ToString(),
024                             u["Tel"].ToString(),
025                             u["Email"].ToString(),
026                             "-"
027                         }
028                     };
029  
030         var data = new
031         {
032             total = query.Count() / Convert.ToInt32(rows) + 1,
033             page = Convert.ToInt32(page),
034             records = query.Count(),
035             rows = query.Skip(Convert.ToInt32(rows) * (Convert.ToInt32(page) - 1)).Take(Convert.ToInt32(rows))
036         };
037  
038         return Json(data, JsonRequestBehavior.AllowGet);
039     }
040  
041     /// <summary>
042     /// 響應Js的「Add」ajax請求,執行添加用戶操做
043     /// </summary>
044     public ContentResult Add(string UserId, string UserName, int Age, string Tel, string Email)
045     {
046         Document doc = new Document();
047         doc["UserId"] = UserId;
048         doc["UserName"] = UserName;
049         doc["Age"] = Age;
050         doc["Tel"] = Tel;
051         doc["Email"] = Email;
052  
053         try
054         {
055             userModel.Add(doc);
056             return Content("添加成功");
057         }
058         catch
059         {
060             return Content("添加失敗");
061         }
062     }
063  
064     /// <summary>
065     /// 響應Js的「Delete」ajax請求,執行刪除用戶操做
066     /// </summary>
067     public ContentResult Delete(string UserId)
068     {
069         try
070         {
071             userModel.Delete(UserId);
072             return Content("刪除成功");
073         }
074         catch
075         {
076             return Content("刪除失敗");
077         }
078     }
079  
080     /// <summary>
081     /// 響應Js的「Update」ajax請求,執行更新用戶操做
082     /// </summary>
083     public ContentResult Update(string UserId, string UserName, int Age, string Tel, string Email)
084     {
085         Document doc = new Document();
086         doc["UserId"] = UserId;
087         doc["UserName"] = UserName;
088         doc["Age"] = Age;
089         doc["Tel"] = Tel;
090         doc["Email"] = Email;
091         try
092         {
093             userModel.Update(doc);
094             return Content("修改爲功");
095         }
096         catch
097         {
098             return Content("修改失敗");
099         }
100     }
101 }

3、實現模型層數據訪問

最後,咱們在Models新建一個Home文件夾,添加模型「UserModel.cs」,實現MongoDB數據庫訪問代碼以下:數據庫

01 public class UserModel
02 {
03     //連接字符串(此處三個字段值根據須要可爲讀配置文件)
04     public string connectionString = "mongodb://localhost";
05     //數據庫名
06     public string databaseName = "myDatabase";
07     //集合名 
08     public string collectionName = "userCollection";
09  
10     private Mongo mongo;
11     private MongoDatabase mongoDatabase;
12     private MongoCollection<Document> mongoCollection;
13  
14     public UserModel()
15     {
16         mongo = new Mongo(connectionString);
17         mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase;
18         mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>;
19         mongo.Connect();
20     }
21     ~UserModel()
22     {
23         mongo.Disconnect();
24     }
25  
26     /// <summary>
27     /// 增長一條用戶記錄
28     /// </summary>
29     /// <param name="doc"></param>
30     public void Add(Document doc)
31     {
32         mongoCollection.Insert(doc);
33     }
34  
35     /// <summary>
36     /// 刪除一條用戶記錄
37     /// </summary>
38     public void Delete(string UserId)
39     {
40         mongoCollection.Remove(new Document { { "UserId", UserId } });
41     }
42  
43     /// <summary>
44     /// 更新一條用戶記錄
45     /// </summary>
46     /// <param name="doc"></param>
47     public void Update(Document doc)
48     {
49         mongoCollection.FindAndModify(doc, new Document { { "UserId", doc["UserId"].ToString() } });
50     }
51  
52     /// <summary>
53     /// 查找全部用戶記錄
54     /// </summary>
55     /// <returns></returns>
56     public IEnumerable<Document> FindAll()
57     {
58         return mongoCollection.FindAll().Documents;
59     }
60  
61 }

4、小結

代碼下載:http://files.cnblogs.com/lipan/MongoDB_003.rarjson

自此爲止一個簡單MongoDB表格數據操做的功能就實現完畢了,相信讀者在看完這篇文章後,差很少均可以輕鬆實現MongoDB項目的開發應用了。聰明的你必定會比本文作的功能更完善,更好。下篇計劃講解linq的方式訪問數據集合。前端框架

相關文章
相關標籤/搜索