.NET CORE 完美支持AOT 的 ORM 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不支持

posted @ 2024-05-02 11:43  阿妮亚  阅读(987)  评论(0编辑  收藏  举报