NET8 ORM 使用AOT SqlSugar 和 EF Core
.NET AOT介绍
.Net8的本地预编机器码NET AOT,它几乎进行了100%的自举。微软为了摆脱C++的钳制,做了很多努力。也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等。而需要C++做的,也就仅仅是引导程序,本篇通过代码来看下这段至关重要的引导程序的运作模式。
.NET支持功能

SqlSugar ORM使用AOT操作数据库
SqlSugar已经完美支持了.net aot,下面DEMO包含了 建表 、插入、查询、删除和更新
解压后直接布就可以发布成AOT文件了

Nuget安装
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配置教程
创建一个带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要能发布出去)
如何让自已代码支持AOT
1、不能有dynamic类型 可以用object替换
2、不能有emit可以用表达式树代替换
3、一些反射找不到构造函数或者Type需要配置xml
4、反射不支持根据路径加载程序集,可以从一个类的Type中拿出来
5、发布出现c++错误,需在安装和更新VS的地方把 c++桌面 装上
6、发布要选x64 不支持x86 和arm
SqlSugar ORM详细教程
SqlSugar 是一款 老牌 .NET 开源多库架构ORM框架(EF Core单库架构),由果糖大数据科技团队
维护和更新 ,开箱即用最易上手的.NET ORM框架 。生态圈丰富,目前开源生态仅次于EF Core,但是在需要
多库兼容的项目或产品中更加偏爱SqlSugar 【开源生态】 【视频教程】
EF Core8
暂时还没有支持AOT

浙公网安备 33010602011771号