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文件了

aot_test-master.rar

image.png

 

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 【开源生态】 【视频教程】 

 aot_test-master.rar

 

EF Core8

暂时还没有支持AOT

posted @ 2023-11-17 22:31  阿妮亚  阅读(3477)  评论(14编辑  收藏  举报