.NET中好用的MongoDb ORM很少,选择也很少,所以我打造了一款适合SQL习惯的MongoDb ORM,让用户多一个选择。

1、 MongoDB ORM教程

1.1 NUGET 安装

SqlSugar.MongoDbCore
SqlSugarCore

1.2 已支持功能

单表CRUD+分页+排序+简单分组+嵌套文件(类似Json类型)+简单联表

1.3 创建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里面自定义好了主键

外键定义 :设置 ColumnDataType =nameof(ObjectId)

 //继承的MongoDbBase里面已经有了主键,当然你也可以复制出来不用基类
public class Student:MongoDbBase
{
//主键在基类,也可以自个复制出来不用基类
public string Name { get; set; } //外键需要设置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一般是单表操作比较多,官方并不推荐联表操作一般用json做嵌套文档比较多

不过SqlSugar也支持了联表

//简单查询
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(); //简单联表(目前只能支持这种基本联表)
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 删除

//根据主键岀队string [] ids= [...]
db.Deleteable<Student>().In(ids).ExecuteCommandAsync()
//根据实体删除,实体要有主键 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#对象构造
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

.NET中全新的MongoDb ORM框架 - SqlSugar的更多相关文章

  1. .Net开源SqlServer ORM框架SqlSugar整理

    一.链接整理 官方Git源代码地址: https://github.com/sunkaixuan/SqlSugar 最新发布版更新地址:当前版本Release 3.5.2.1 https://gith ...

  2. .NET 开源SqlServer ORM框架 SqlSugar 3.0 API

    3.1.x ,将作为3.X系统的最后一个版本,下面将会开发 全新的功能 更新列表:https://github.com/sunkaixuan/SqlSugar/releases 优点: SqlSuga ...

  3. Asp.Net 高性能ORM框架 SqlSugar.ORM 2.8

    3.0最新API: http://www.cnblogs.com/sunkaixuan/p/5911334.html 1.前言/Preface SqlSugar从去年到现在已经一年了,版本从1.0升到 ...

  4. Asp.Net 高性能ORM框架——SqlSugar

    公司团队项目.产品已经完全抛弃EF,SqlSugar定位不是ORM,而是为了方便的让你去写Sql. SqlSugar 媲美原生ADO.NET的性能,语法简洁,并且支持 Json .Dynamic. L ...

  5. .NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...

    前言 在以前的一篇文章中,为大家分享了<什么是ORM?为什么用ORM?浅析ORM的使用及利弊>.那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper, ...

  6. .NET ORM框架 SqlSuagr4.0 功能详解与实践【开源】

    SqlSugar 4.0 ORM框架的优势 为了未来能够更好的支持多库分布式的存储,并行计算等功能,将SqlSugar3.x全部重写,现有的架构可以轻松扩展多库. 源码下载: https://gith ...

  7. .NET ORM框架 SqlSugar4.0 功能快速预览【开源】

    SqlSugar 4.0 ORM框架的优势 为了未来能够更好的支持多库分布式的存储,并行计算等功能,将SqlSugar3.x全部重写,现有的架构可以轻松扩展多库. 源码下载: https://gith ...

  8. 目前的.NET(C#)世界里,主流的ORM框架

    推荐一些常用的asp.net ORM框架 SqlSugar (国内) Dos.ORM (国内) Chloe (国内) StackExchange/Dapper (国外) Entity Framewor ...

  9. ORM概述及常用ORM框架

    一.ORM ORM(Object-relational mapping),即对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.也就是说,ORM是通过使用描述对象和数据库之间映 ...

  10. EF、Dapper、NHibernate等ORM框架的比较及优缺点

    什么是ORM? ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操 ...

随机推荐

  1. vue3-webseek网页版AI问答|Vite6+DeepSeek+Arco流式ai聊天打字效果

    2025 AI实战vue3+deepseek+arcoDesign仿DeepSeek/豆包网页版AI聊天助手. vue3-web-deepseek 实战网页PC版智能AI对话,基于vite6+vue3 ...

  2. 常见的 AI 模型格式

    来源:博客链接 过去两年,开源 AI 社区一直在热烈讨论新 AI 模型的开发.每天都有越来越多的模型在 Hugging Face 上发布,并被用于实际应用中.然而,开发者在使用这些模型时面临的一个挑战 ...

  3. ZeroTier简单使用

    在 CentOS 系统下,你可以使用以下命令行操作来管理 ZeroTier 网络和设备.首先,确保已经正确安装 ZeroTier 软件,你可以按照以下步骤进行安装: 安装 ZeroTier: Zero ...

  4. deepseek+dify工作流实现代码审计

    一.登录dify,设置deepseek apikey 登录dify(https://cloud.dify.ai/signin) 设置deepseek apikey 二.创建dify工作流 添加工作流应 ...

  5. 什么是 Gork ?

    Grok 是埃隆·马斯克旗下的人工智能公司 xAI 的开发的一系列大型语言模型 (LLMs)产品,包括Grok 1.Grok 2和即将发布的Grok 3. 受<银河系漫游指南>的启发,Gr ...

  6. ASP.NET Core 静态资源的打包与压缩

    以 Visual Studio Community 2017 15.5.1 为例 配置文件 bundleconfig.json 新建一个AspNetCore MVC项目,项目中会有一个bundleco ...

  7. Clean DDD 技术沙龙 2025 杭州站

    整洁领域驱动设计(Clean DDD)第一次线下活动来了,这是: 一个软件设计的全新视角 一次复杂度掌控感的深度体验 一场软件工程效率的探索之旅 活动时间:2025年4月13日星期日 下午 13:00 ...

  8. Python科学计算系列11—几何绘图

    1.显函数图像绘制 例:绘制y=sinx的图像 代码如下: from sympy import * x = symbols('x') plot(sin(x), (x, -2 * pi, 2 * pi) ...

  9. 康谋分享 | aiSim5基于生成式AI扩大仿真测试范围(终)

    在前面的几章节中探讨了aiSim仿真合成数据的置信度,此外在场景重建和测试流程闭环的过程中,难免会面临3D场景制作重建耗时长.成本高.扩展性低以及交通状况复杂程度难以满意等问题,当前的主要挑战在于如何 ...

  10. 通用型产品发布解决方案(基于分布式微服务技术栈:SpringBoot+SpringCloud+Spring CloudAlibaba+Vue+ElementUI+MyBatis-Plus+MySQL+Git+Maven+Linux+Docker+Nginx - 《01》

    通用型产品发布解决方案(基于分布式微服务技术栈:SpringBoot+SpringCloud+Spring CloudAlibaba+Vue+ElementUI+MyBatis-Plus+MySQL+ ...