.NET CORE 完美支持AOT 的 ORM SqlSugar 教程

news/2024/10/14 8:26:51

1、AOT适合产场

Aot适合工具类型的项目使用,优点禁止反编 ,第一次启动快,业务型项目或者反射多的项目不适合用AOT 

AOT更新记录: 实实在在经过实践的AOT ORM

5.1.4.117 +支持AOT

5.1.4.123 +支持CodeFirst和异步方法

5.1.4.129-preview12+ 修复 db.Unionall bug

5.1.4.129-preview17+ 修复 db.Union bug

5.1.4.135-preview05+  修复 查单列数据 出错

5.1.4.140 修复  db.Storageable(data).WhereColumns(string [])重载引起的问题(导航更新也使用该方法)

5.1.4.141导航查询一对一查出来空

5.1.4.148 优化发布时的警告数据

2、SqlSugar AOT优势

高性能启动快,功能成熟完全可以投入生产

image.png

3、数据库支持

SqlServer 支持 (项目文件 InvariantGlobalization要改为false)
MySql 支持  
Sqlite 支持
PostgresSQL 支持  (安装最新的Npgsql)
Oracle 不支持 (官方驱动不支持)
其他 未测试

4、Demo下载

解压后直接布就可以发布成AOT文件了

newaot.rar (下载后更新一下SqlSugar)

image.png

 

5、AOT教程

使用AOT需要简单配置一下如下:

5.1 安装Nuget

 SqlSugarCore

5.2 启用AOT和创建DB

//启用AOT 程序启动执行一次就好了
StaticConfig.EnableAot = true;

//用SqlSugarClient每次都new,不要用单例模式 
var db = new SqlSugarClient(new ConnectionConfig()
   {
       IsAutoCloseConnection = true,
       DbType = DbType.Sqlite,
       ConnectionString = "datasource=demo.db" 

   },
   it =>
   {
       // Logging SQL statements and parameters before execution
       // 在执行前记录 SQL 语句和参数
       it.Aop.OnLogExecuting = (sql, para) =>
       {
           Console.WriteLine(UtilMethods.GetNativeSql(sql, para));
       };
   });
   return db;

5.3 AOT 配置教程

创建一个带AOT的类项目 

image.png

新建一个rd.xml

<Directives>
<Application>
<Assembly Name="SqlSugar"  Dynamic="Required All">
 </Assembly>  
 <Assembly Name="启动项目名"  Dynamic="Required All">
 </Assembly>  
</Application>
</Directives>

改项目文件

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <InvariantGlobalization>true</InvariantGlobalization>
    <PublishAot>true</PublishAot>
    <Platforms>AnyCPU;x64</Platforms>
  </PropertyGroup>
 <ItemGroup>
 <RdXmlFile Include="rd.xml" />
 </ItemGroup>

RdXmlFile这个重点引用我们新建的rd.xml (这个xml要能发布出去)

SqlServer常见问题

SqlServer如果报下面配置相关的错要改成false

 <InvariantGlobalization>false</InvariantGlobalization>

Sqlserver在web下的Demo  AotTestServerWeb.zip  

发布AOT

image.png

 

 

用户问题汇总

https://www.donet5.com/ask/9/23451

不支持功能

//用到dynamic参数的方法

注意说明

AOT还有很多功能有限制,我个人认为用来开发小工具还可以,大点的项目暂时不要用,在反射上面有很多限制

.net API只支持了最基本的功能很多功能没有

.net MVC不支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/26778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

php合并时间区间

需要写一段合并时间区间的代码,写个demo记录下 <?php $arr = [["2024-04-16 11:25:46", "2024-04-16 12:19:21"],["2024-04-16 03:14:06", "2024-04-16 10:13:21"],["2024-04-16 13:14:59", "2024-04-16 15:44:46…

王道数据结构个人向笔记-第二章(线性表)

目录2.1 线性表的定义和基本操作2.2 顺序表2.2.1 顺序表的定义2.2.2 顺序表的插入、删除(实现是基于静态分配)2.2.3 顺序表的查找2.3 链表2.3.1 单链表的定义2.3.2 单链表的插入删除2.3.3 单链表的查找2.3.4 单链表的建立2.3.4 双链表2.3.5 循环链表2.1 线性表的定义和基本操…

Java安全基础之Java反射机制和ClassLoader类加载机制

反射机制允许程序在运行时检查和操作类、对象、方法以及属性的信息。类加载机制负责将类的字节码加载到内存中,并且在运行时动态地链接和初始化类。目录Java 反射机制反射 java.lang.RuntimeClassLoader 类加载机制URLClassLoaderloadClass() 与 Class.forName() 的区别? Jav…

高中生一定就会了么???(i)

\(题源:2023星光杯数学思维能力测评(小学组)第一试\)\(表示离谱\)

1. SpringBoot 入门

1. SpringBoot 简介 SpringBoot是由Pivotal团队提供的全新框架,可以帮助我们开发基于Spring的、独立的、生产级的应用程序。​ 其中SpringBoot的官网是:Spring Boot Reference DocumentationSpringBoot的主要目标是:为所有Spring开发提供更快的入门体验开箱即用,提供了自动…

鸿蒙安装apk软件失败(不支持该设备)

1.关闭纯净模式增强模块 2.给文件管理器一个权限,一个安装外部来源应用的权限魔芋爽要犯了.jpg1.关闭纯净血压增高模块 2.安装外部来源(默认文件管理器是没有权限的) 3.没登华为账号,等七天过了再来试试后续(matepad11.5就是垃圾,快退!.jpg)

mysql连接不上,服务中找不到mysql

分析 因为太久没使用mysql,服务自动删除了解决 注册/安装服务 win+x,a,以管理员打开powershell(或者使用cmd,随你) # 注意此处需要引号,因为有空格 # 1. cd到mysql的可执行文件,如果记不得或者像我一样懒,直接everything搜索mysqld.exe即可 cd C:\Program Files\MySQL\My…