<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MongoDB的三層操作

        來源:懂視網 責編:小采 時間:2020-11-09 09:45:06
        文檔

        MongoDB的三層操作

        MongoDB的三層操作:今天也不知道哪根筋不對了,沒有打Dota卻想寫一篇文章,其實自己也不知道寫什么,專業技術較水,但真的很想寫,自己文采又不夠,所以還是只能寫技術方面的文章啦!半瓶子還是可以晃蕩晃蕩的哈哈~ NOSQL近來勢頭不錯,MongoDB更是其中的嬌嬌者,自己學nosq
        推薦度:
        導讀MongoDB的三層操作:今天也不知道哪根筋不對了,沒有打Dota卻想寫一篇文章,其實自己也不知道寫什么,專業技術較水,但真的很想寫,自己文采又不夠,所以還是只能寫技術方面的文章啦!半瓶子還是可以晃蕩晃蕩的哈哈~ NOSQL近來勢頭不錯,MongoDB更是其中的嬌嬌者,自己學nosq

        今天也不知道哪根筋不對了,沒有打Dota卻想寫一篇文章,其實自己也不知道寫什么,專業技術較水,但真的很想寫,自己文采又不夠,所以還是只能寫技術方面的文章啦!半瓶子還是可以晃蕩晃蕩的哈哈~ NOSQL近來勢頭不錯,MongoDB更是其中的嬌嬌者,自己學nosql的

        今天也不知道哪根筋不對了,沒有打Dota卻想寫一篇文章,其實自己也不知道寫什么,專業技術較水,但真的很想寫,自己文采又不夠,所以還是只能寫技術方面的文章啦!半瓶子還是可以晃蕩晃蕩的哈哈~

        NOSQL近來勢頭不錯,MongoDB更是其中的嬌嬌者,自己學nosql的時候也是參考了大量的資料,最終決定要從MongoDB入手的,最重要的原因有兩點:1自己是簡單的愛好者,一切問題我都在想是否有簡單的方法解決,寧可停下來去思考大量時間,也不愿用笨方法馬上去做,而MongoDB的操作大都很簡單,2自己是JS的愛好者,沒事就喜歡拿一本js的本從頭到尾看一邊,也不管記住多少,也不管用不用得到,就是喜歡,MongoDB以BSON格式存儲,所以操作也起來也算得心應手!現在做一個項目正是用MongoDB做為數據庫的,一開始沒有DAL,BLL直接訪問數據庫,然后就到UI了,空間,而且BLL是全靜態的(我喜歡靜態方法的調用簡單,但狠靜態類的不能繼承!),當時考慮的是用MongoDB的驅動去操作太直白了!感覺沒必要再寫個DAL!,后來知道我想法還是很天真的,哈哈!下面就說現在的操作方式吧~

        一、Module層

        [Serializable] user { public ObjectId id; public string n; public int age; public Birthday birth; Birthday { public int y; public int m; public int d; } }

        咋一看,虛擬主機,有幾個地方不規范,1類名首字母和公開字段沒有大寫,2公開的字段,而沒有用屬性,3字段命名沒表達它的意思。現在逐個解釋一下,類名和字段沒大寫首字母主要是數據庫里的命名是遵循js的,用js表示時大家一般會這樣寫:

        var user={id:ObjectId("123456"),n:"loogn",age:23,birth:{y:19,m:7,d:7}}

        然而,可能有人會說可以用MongoDB.Bson.Serialization.Attributes.BsonElement這樣一個Attribute關聯呢!不過我不會那樣做,原因就是太麻煩了!這里可能還是有疑問,留到第3個問題說。

        公開字段而沒有用屬性也是不合常理的,學校老師都交過,不管你能不能理解,反正就是要私有化字段,想公開請用屬性,哈哈!不過我想了很久還是不走尋常路了,目前為止用字段沒有出現過缺陷問題,我不保證以后不會,但我感覺幾率十分小,就算真的有什么問題必需要用屬性,后面加上{get;set;}也不麻煩吧!屬性畢竟還是方法,用屬性有多余的方法調用開銷,而且實體類本來就是不尋常的類,一般只表示對象狀態(用字段),屬性里如果有邏輯(就像老師常說的年齡不能小于0且不能大于150等等!),你會放到這里做嗎?顯然你都是放在BLL里做!字段命名太短了沒有表達它的意思,其實這個可以和第一個一起來說,MongoDB是無模式的,同一個合集可以保多個不規則的文檔,如user集合:

        {id:1,n:"user1",desc:"我的描述"} {id:2,n:"user2"}

        所以數據庫必須保存文檔的每一個元素的name(即id,name,desc,id,name),所以元素name越短越節省空間,本來是用name更能表達的,這里用了n,其實只要把常用的約定一下,絕大部分人都是可以接受的。

        在user里還有個內嵌類Birthday,而這個類大寫了首字母,我是這樣考慮的,內嵌類名全部按C#命名規范,因為容器類有一個該內嵌類類型的字段,這里是birth,但如果找不到合適的縮寫怎么辦呢,直接小寫內嵌類名就可以了,如內嵌城市類City,字段名為city就不會重復了。

        二、DAL層

        在這一層要寫一個基類,完成這個基類后,其他的各各DAL類都是浮云了~,在寫基類之前有一個MongoHelper,MongoHelper很簡單,直接給出代碼且不寫解釋:

        MongoServer

        public class MongoHelper { static readonly MongoConnectionStringBuilder ConnectionStringBuilder; static MongoHelper() { ] != null) { ConnectionStringBuilder = ].ConnectionString); } ] != null) { ConnectionStringBuilder = ].ConnectionString); } else { ); } } public static MongoServer GetServer(string connectionString) { var server = MongoServer.Create(connectionString); return server; } public static MongoServer GetServer() { var server = MongoServer.Create(ConnectionStringBuilder); return server; } public static MongoDatabase GetDatabase(string databaseName) { return GetServer().GetDatabase(databaseName); } public static MongoDatabase GetDatabase() { return GetDatabase(ConnectionStringBuilder.DatabaseName); } }

        完了后就可以寫BaseDAL了,如果沒有泛型,DAL的工作還真是索然無味,但現在用泛型DAL的工作有趣多了,先承上代碼:

        數據訪問層基類 BaseDAL { CollectionName { set; get; } 設置集合名 SetCollectionName(); private MongoCollection m_collection; 根據CollectionName得到MongoCollection對象 MongoCollection Collection { get { if (m_collection == null) { CollectionName = SetCollectionName(); m_collection = MongoHelper.GetDatabase().GetCollection(CollectionName); } return m_collection; } } 根據query條件得到一個文檔對象 TDocument FindOne(IMongoQuery query, PreprocessHandler preprocess) { var document = Collection.FindOne(query); if (preprocess != null) { preprocess(ref document); } return document; } 把MongoCursor轉換成IList類型 IList CursorToList(MongoCursor cursor, PreprocessHandler preprocess) { IList list = new List(30); bool isPreprocess = preprocess != null; foreach (TDocument document in cursor) { var doc = document; if (isPreprocess) preprocess(ref doc); list.Add(doc); } return list; } 根據query查詢集合 IList Find(IMongoQuery query, MongoCursorSettings cursorSettings, PreprocessHandler preprocess) { var cursor = Collection.Find(query); if (cursorSettings != null) { cursorSettings.Set(cursor); } var list = CursorToList(cursor, preprocess); return list; } }

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MongoDB的三層操作

        MongoDB的三層操作:今天也不知道哪根筋不對了,沒有打Dota卻想寫一篇文章,其實自己也不知道寫什么,專業技術較水,但真的很想寫,自己文采又不夠,所以還是只能寫技術方面的文章啦!半瓶子還是可以晃蕩晃蕩的哈哈~ NOSQL近來勢頭不錯,MongoDB更是其中的嬌嬌者,自己學nosq
        推薦度:
        標簽: 操作 三層 mongodb
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产91久久久久久久免费| 亚洲精品无码久久千人斩| 妞干网免费视频在线观看| 国产成人在线免费观看| 亚洲春色在线视频| 亚洲s码欧洲m码吹潮| 久草免费福利视频| 国产jizzjizz视频全部免费| 久久亚洲精品无码gv| 亚欧人成精品免费观看| 国产成人免费手机在线观看视频| 精品亚洲av无码一区二区柚蜜| 114级毛片免费观看| 国产亚洲成av片在线观看| 野花香在线视频免费观看大全| 久久夜色精品国产亚洲AV动态图| 黄色网址免费在线| 97无码免费人妻超级碰碰碰碰| 久久亚洲国产精品五月天| 精品熟女少妇a∨免费久久| 亚洲日韩中文字幕在线播放| 国产综合激情在线亚洲第一页| 中字幕视频在线永久在线观看免费| 久久国产亚洲电影天堂| 欧美好看的免费电影在线观看| 亚洲成在人线aⅴ免费毛片| 亚洲毛片av日韩av无码 | 亚洲高清免费在线观看| 成年女人A毛片免费视频| 亚洲A∨精品一区二区三区| 亚洲高清乱码午夜电影网| 亚洲欧洲日本在线| 95免费观看体验区视频| 色天使色婷婷在线影院亚洲| 亚洲线精品一区二区三区影音先锋| 亚洲网站在线免费观看| 国产午夜亚洲精品不卡免下载| 亚洲AV无码第一区二区三区 | 亚洲视频一区在线观看| 国产免费人成在线视频| 暖暖日本免费中文字幕|