.NET AOT8 基本上能够免强使用了, SqlSugar ORM也支持了CRUD 能在AOT下运行了
SqlSugarCore
- StaticConfig.EnableAot = true;//启用AOT 程序启动执行一次就好了
-
- //用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;
- //查询
- var list=db.Queryable<Student>().ToList();
- var list2=db.Queryable<Student>().ToDataTable();
- var list3= db.Queryable<Student>().Select(it=>new {
- id=it.Id
- }).ToList();
-
- //插入 、删除和更新只要是实体目前测试下来 都OK
- db.Insertable(new Student()
- {
- Id = 1,
- Name = "aa"
- }).ExecuteCommand();
- db.Deleteable(new Student()
- {
- Id = 1,
- Name = "aa"
- }).ExecuteCommand();
- db.Updateable(new Student()
- {
- Id = 1,
- Name = "aa"
- }).ExecuteCommand();
-
- //写sql也支持
- db.Ado.GetDataTable(sql);
- db.Ado.ExecuteCommand(sql);
- //部分库建表不支持
- //动态建类不支持
创建一个带AOT的类项目

新建一个rd.xml
- <Directives>
- <Application>
- <Assembly Name="SqlSugar" 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要能发布出去)