.NET中全新的MongoDb?ORM框架SqlSugar詳解(最新)
.NET中好用的MongoDb ORM很少,選擇也很少,所以我打造了一款適合SQL習(xí)慣的MongoDb ORM,讓用戶(hù)多一個(gè)選擇。
1、 MongoDB ORM教程
1.1 NUGET 安裝
SqlSugar.MongoDbCore SqlSugarCore
1.2 已支持功能
單表CRUD+分頁(yè)+排序+簡(jiǎn)單分組+嵌套文件(類(lèi)似Json類(lèi)型)+簡(jiǎn)單聯(lián)表
1.3 創(chuàng)建DB對(duì)象
//注冊(cè)DLL防止找不到DLL(扔在程序啟動(dòng)時(shí))
InstanceFactory.CustomAssemblies = new System.Reflection.Assembly[] {
typeof(SqlSugar.MongoDb.MongoDbProvider).Assembly };
//db對(duì)象(用法和sqlsugar入門(mén)中一樣)
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 實(shí)體類(lèi)定義(重點(diǎn)注意)
主鍵定義:繼承MongoDbBase里面自定義好了主鍵
外鍵定義 :設(shè)置 ColumnDataType =nameof(ObjectId)
//繼承的MongoDbBase里面已經(jīng)有了主鍵,當(dāng)然你也可以復(fù)制出來(lái)不用基類(lèi)
public class Student:MongoDbBase
{
//主鍵在基類(lèi),也可以自個(gè)復(fù)制出來(lái)不用基類(lèi)
public string Name { get; set; }
//外鍵需要設(shè)置ObjectId類(lèi)型不然存儲(chǔ)會(huì)的是string
[SqlSugar.SugarColumn(ColumnDataType =nameof(ObjectId))]
public string SchoolId { get; set; }
}
//MongoDbBase是ORM自帶的一個(gè)類(lèi),方便你不定義主鍵
public class MongoDbBase
{
[SugarColumn(IsPrimaryKey = true, IsOnlyIgnoreInsert = true, ColumnName = "_id")]
public string Id { get; set; }
}2、CRUD用例
2.1 插入
//插入無(wú)返回值 db.Insertable(data).ExecuteCommand(); //插入并將主鍵賦值到實(shí)體 db.Insertable(data).ExecuteCommandIdentityIntoEntity(); //插入返回IDS var ids= db.Insertable(data).ExecuteReturnPkList<string>();
2.2 查詢(xún)
MongoDb一般是單表操作比較多,官方并不推薦聯(lián)表操作一般用json做嵌套文檔比較多
不過(guò)SqlSugar也支持了聯(lián)表
//簡(jiǎn)單查詢(xún)
var data2 = db.Queryable<Student>().Where(it => it.Book.Price == 1).ToList();
//分頁(yè)
var count = 0;
var list = db.Queryable<School>().OrderBy(it=>it.Name).ToPageList(1,2,ref count);
//json類(lèi)型(實(shí)體定義isjson)
var data2 = db.Queryable<Student>().Where(it => it.Book.Price == 1).ToList();
//簡(jiǎn)單聯(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();
//簡(jiǎn)單分組查詢(xún)
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();
//目前不支持導(dǎo)航查詢(xún)和子查詢(xún)2.3 刪除
//根據(jù)主鍵岀隊(duì)string [] ids= [...] db.Deleteable<Student>().In(ids).ExecuteCommandAsync() //根據(jù)實(shí)體刪除,實(shí)體要有主鍵 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大學(xué)"" }]");
//C#對(duì)象構(gòu)造
var documents = new[]
{
new BsonDocument { { "Name", "XX大學(xué)" } }
};
var bsonArray = new BsonArray(documents).ToJson();
var cmd = $"insertMany UnitSchool123131 {json}";
db.Ado.ExecuteCommand(cmd);
//查詢(xún)
var list=db.Ado.SqlQuery<T>(cmd);
var dt=db.Ado.GetDataTable(cmd);
//sqlsugar中獲取原生對(duì)象
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
asp.net生成高質(zhì)量縮略圖通用函數(shù)(c#代碼),支持多種生成方式
這兩天正在研究報(bào)表中餅圖的繪圖方法,文章中的某些做法值得參考.2008-08-08
DropDownList設(shè)置客戶(hù)端事件思路
這篇文章主要介紹了DropDownList設(shè)置客戶(hù)端事件思路,需要的朋友可以參考下2015-09-09
ASP.NET網(wǎng)站偽靜態(tài)下使用中文URL的方法
中文URL是在URL中直接使用漢字,它的好處是可以使用鏈接地址看起來(lái)非常直觀易懂,偽靜態(tài)的規(guī)則,是在web.config文件中定義的2014-08-08
C#中的cookie編程簡(jiǎn)單實(shí)例與說(shuō)明
這篇文章介紹了C#中的cookie編程簡(jiǎn)單實(shí)例與說(shuō)明,有需要的朋友可以參考一下2013-07-07
.NET CORE中比較兩個(gè)文件內(nèi)容是否相同的最快方法
這篇文章主要給大家介紹了關(guān)于.NET CORE中比較兩個(gè)文件內(nèi)容是否相同的最快方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET CORE具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
asp.net下生成99個(gè)不同的隨機(jī)數(shù)
asp.net下生成99個(gè)不同的隨機(jī)數(shù)...2007-04-04
asp.net core MVC之實(shí)現(xiàn)基于token的認(rèn)證
這篇文章主要介紹了asp.net core MVC之實(shí)現(xiàn)基于token的認(rèn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
ASP.NET筆記之文章發(fā)布管理小系統(tǒng)案例
本篇文章小編為大家介紹,ASP.NET筆記之文章發(fā)布管理小系統(tǒng)案例。需要的朋友參考下2013-04-04
asp.net中button控制先執(zhí)行js再執(zhí)行后臺(tái)程序的方法
這篇文章主要介紹了asp.net中button控制先執(zhí)行js再執(zhí)行后臺(tái)程序的方法,涉及button控件與js的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01

