首页 > 数据库 >.NET CORE 完美支持AOT 的 ORM SqlSugar 教程

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

时间:2024-05-02 11:55:20浏览次数:14  
标签:CORE 5.1 ORM db 支持 AOT true SqlSugar

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不支持

标签:CORE,5.1,ORM,db,支持,AOT,true,SqlSugar
From: https://www.cnblogs.com/sunkaixuan/p/18170061

相关文章

  • Gradformer: 通过图结构归纳偏差提升自注意力机制的图Transformer
    这是4月刚刚发布在arxiv上的论文,介绍了一种名为“Gradformer”的新型图Transformer,它在自注意力机制中引入了指数衰减掩码。以下是主要创新点:指数衰减掩码: Gradformer在其自注意力模块中集成了衰减掩码。该掩码随着图结构中节点之间的距离减小而呈指数递减。这种设计使模型能够......
  • efcore全局查询过滤器
    我们删除实体时,平常不需要物理删除,而是软删除,软删除有什么好处呢?它能够在下次创建实体时快速恢复实体的信息,平时我们使用IsDeleted字段来代表软删除,以下是一个示例publicclassPost{publicintPostId{get;set;}publicstringTitle{get;set;}public......
  • nestjs如何使用typeorm
     默认你有点nestjs基础  第一步安装npmadd@nestjs/typeormtypeormmysql2第二步 imports:[TypeOrmModule.forRoot({type:'mysql',host:'',port:3306,username:'',password:'',database:''......
  • aardio封装库) 微软开源的js引擎(ChakraCore)
    前言做爬虫肯定少不了JavaScript引擎的使用,比如在Python中现在一般用pyexecjs2来执行JavaScript代码,另外还有一些其他执行JavaScript的库:https://github.com/eight04/node_vm2:rpc调用nodejs,需要安装nodehttps://github.com/eight04/deno_vm:rpc调用deno,需要安装denohttps:......
  • Hive中的FileFormat、RowFormat和SerDe总结
    Hive如何读写数据?我们知道,hive表的数据是存储在hdfs文件系统中的。那么Hive是如何将hdfs上的数据文件,映射成一张张表呢,今天就来理清楚这个问题。官方文档中对于Hive读数据的流程如下: 精炼一下:Hive的执行引擎首先通过InputFormat读取一条一条的数据记录,接着调用Serde.destr......
  • .NET 中使用 GaussDB C# ORM
    openGauss(GaussDB)openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验连接字......
  • .NET中使用 openGauss C# ORM
    openGauss(GaussDB)openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验 连接......
  • 在 .net core 3.1 的 docker 镜像生成的容器中,连接 sql server 2008 r2 版本的数据库,
    错误1:{"ClassName":"System.Data.SqlClient.SqlException","Message":"Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringthepre-loginhandshake.(provider:TCPProvider,......
  • Fast Walsh Transform 学习笔记 | FWT
    本文中使用\(\cap\)表示按位与,用\(\cup\)表示按位或Part1.与/或卷积First.问题引入给定长度为\(2^n\)的数列\(A,B\),求\(C_i=\sum_{j\cupk=i}A_j\timesB_k\)显然有\(O(4^n)\)的暴力Second.变换这一部分可以参考快速莫比乌斯变换中的Zeta变换,即......
  • opencv距离变换函数distanceTransform
    当图像内的各个子图没有连接时,可以直接使用形态学的腐蚀操作确定前景对象,但是如果图像内的子图连接在一起时,就很难确定前景对象了。此时,借助于距离变换函数cv2.distanceTransform()可以方便地将前景对象提取出来。距离变换函数cv2.distanceTransform()计算二值图像内任意点到最......