欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET中全新的MongoDb?ORM框架SqlSugar詳解(最新)

 更新時間:2025年07月02日 14:02:59   作者:阿妮亞  
.NET中好用的MongoDb ORM很少,選擇也很少,所以我打造了一款適合SQL習慣的MongoDb ORM,讓用戶多一個選擇,本文給大家介紹.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)文章

最新評論