.NET中全新的MongoDb?ORM框架SqlSugar詳解(最新)
.NET中好用的MongoDb ORM很少,選擇也很少,所以我打造了一款適合SQL習慣的MongoDb ORM,讓用戶多一個選擇。
1、 MongoDB ORM教程
1.1 NUGET 安裝
SqlSugar.MongoDbCore SqlSugarCore
1.2 已支持功能
單表CRUD+分頁+排序+簡單分組+嵌套文件(類似Json類型)+簡單聯(lián)表
1.3 創(chuàng)建DB對象
//注冊DLL防止找不到DLL(扔在程序啟動時) InstanceFactory.CustomAssemblies = new System.Reflection.Assembly[] { typeof(SqlSugar.MongoDb.MongoDbProvider).Assembly }; //db對象(用法和sqlsugar入門中一樣) var db = new SqlSugarClient(new ConnectionConfig() { IsAutoCloseConnection = true, DbType = DbType.MongoDb, ConnectionString = SqlSugarConnectionString }, it => { it.Aop.OnLogExecuting = (sql, para) => { //AOP打印SQL Console.WriteLine(UtilMethods.GetNativeSql(sql, para)); }; }); //字符串2種都可以 var ConnectionString = "mongodb://root:123456@222.71.212.3:27017/testDB?authSource=admin"; var ConnectionString = "host=222.71.212.3;Port=27017;Database=testDB;Username= root;Password=123456;authSource=admin;replicaSet=";
1.4 實體類定義(重點注意)
主鍵定義:繼承MongoDbBase里面自定義好了主鍵
外鍵定義 :設(shè)置 ColumnDataType =nameof(ObjectId)
//繼承的MongoDbBase里面已經(jīng)有了主鍵,當然你也可以復制出來不用基類 public class Student:MongoDbBase { //主鍵在基類,也可以自個復制出來不用基類 public string Name { get; set; } //外鍵需要設(shè)置ObjectId類型不然存儲會的是string [SqlSugar.SugarColumn(ColumnDataType =nameof(ObjectId))] public string SchoolId { get; set; } } //MongoDbBase是ORM自帶的一個類,方便你不定義主鍵 public class MongoDbBase { [SugarColumn(IsPrimaryKey = true, IsOnlyIgnoreInsert = true, ColumnName = "_id")] public string Id { get; set; } }
2、CRUD用例
2.1 插入
//插入無返回值 db.Insertable(data).ExecuteCommand(); //插入并將主鍵賦值到實體 db.Insertable(data).ExecuteCommandIdentityIntoEntity(); //插入返回IDS var ids= db.Insertable(data).ExecuteReturnPkList<string>();
2.2 查詢
MongoDb一般是單表操作比較多,官方并不推薦聯(lián)表操作一般用json做嵌套文檔比較多
不過SqlSugar也支持了聯(lián)表
//簡單查詢 var data2 = db.Queryable<Student>().Where(it => it.Book.Price == 1).ToList(); //分頁 var count = 0; var list = db.Queryable<School>().OrderBy(it=>it.Name).ToPageList(1,2,ref count); //json類型(實體定義isjson) var data2 = db.Queryable<Student>().Where(it => it.Book.Price == 1).ToList(); //簡單聯(lián)表(目前只能支持這種基本聯(lián)表) var list = db.Queryable<Student>() .LeftJoin<School>((x, y) => x.SchoolId == y.Id) .LeftJoin<School>((x, y, z) => x.SchoolId == z.Id) .Where((x, y) =>y.Name == "TestSchool") .Select((x, y,z) => new { StudentName = x.Name, SchoolName = y.Name, SchoolName2=z.Name }).ToList(); //簡單分組查詢 var list14 = db.Queryable<OrderInfo>() .GroupBy(it => new { it.Name ,it.Price }) .Select(it => new { key = it.Name, Prie=it.Price, groupCount = SqlFunc.AggregateCount(it.Id), max = SqlFunc.AggregateMax(it.Id), min = SqlFunc.AggregateMin(it.Id) }).ToList(); //目前不支持導航查詢和子查詢
2.3 刪除
//根據(jù)主鍵岀隊string [] ids= [...] db.Deleteable<Student>().In(ids).ExecuteCommandAsync() //根據(jù)實體刪除,實體要有主鍵 var delrow = db.Deleteable(data).ExecuteCommand();
2.4 更新
var updateRow2 = db.Updateable(new List<OrderInfo>() { new OrderInfo() { Id = ids.First(),Name="a31",Price=11}, new OrderInfo() { Id = ids.Last(),Name="a41"} }) .ExecuteCommand(); var updateRow3= db.Updateable<OrderInfo>() .SetColumns(it=>it.Name=="xx") .Where(it=> it.Id == id) .ExecuteCommand();
2.5 使用原生SQL
db.Ado.ExecuteCommand(@"insertMany UnitSchool123131 [{ ""Name"" : ""XX大學"" }]"); //C#對象構(gòu)造 var documents = new[] { new BsonDocument { { "Name", "XX大學" } } }; var bsonArray = new BsonArray(documents).ToJson(); var cmd = $"insertMany UnitSchool123131 {json}"; db.Ado.ExecuteCommand(cmd); //查詢 var list=db.Ado.SqlQuery<T>(cmd); var dt=db.Ado.GetDataTable(cmd); //sqlsugar中獲取原生對象 IMongoDatabase rdb= ((MongoDbConnection)db.Ado.Connection).GetDatabase(); //IMongoDatabase 是什么東西? //var client = new MongoClient("mongodb://localhost:27017"); //IMongoDatabase database = client.GetDatabase("TestDatabase");
3、源碼DEM
https://github.com/DotNetNext/SqlSugar
DEMO 下載 : https://github.com/DotNetNext/SqlSugar
到此這篇關(guān)于.NET中全新的MongoDb ORM框架 - SqlSugar的文章就介紹到這了,更多相關(guān).net MongoDb ORM框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET Core奇淫技巧之動態(tài)WebApi的實現(xiàn)
這篇文章主要介紹了ASP.NET Core奇淫技巧之動態(tài)WebApi的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08ASP.NET Core自定義本地化教程之從文本文件讀取本地化字符串
使用 ASP.NET Core 創(chuàng)建多語言網(wǎng)站,可讓網(wǎng)站擁有更多受眾。下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core自定義本地化教程之從文本文件讀取本地化字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2018-09-09asp.net 實現(xiàn)靜態(tài)頁面累加訪問量的三種方式
asp.net 實現(xiàn)靜態(tài)頁面累加訪問量的實現(xiàn)代碼,需要的朋友可以參考下。2010-03-03ASP.NET向Javascript傳遞變量兩種實現(xiàn)方法
ASP.NET向Javascript傳遞變量兩種實現(xiàn)方法,需要的朋友可以參考下2012-12-12.net Core 3.0 WebApi 創(chuàng)建Linux守護進程的方法
這篇文章主要介紹了.net Core 3.0 WebApi 創(chuàng)建Linux守護進程的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03