.NET AOT介紹
.Net8的本地預(yù)編機(jī)器碼NET AOT,它幾乎進(jìn)行了100%的自舉。微軟為了擺脫C++的鉗制,做了很多努力。也就是代碼幾乎是用C#重寫,包括了虛擬機(jī),GC,內(nèi)存模型等等。而需要C++做的,也就僅僅是引導(dǎo)程序,本篇通過代碼來看下這段至關(guān)重要的引導(dǎo)程序的運(yùn)作模式。
?文章來源:http://www.zghlxwxcb.cn/news/detail-749086.html
.NET支持功能
?
SqlSugar ORM使用AOT操作數(shù)據(jù)庫
?SqlSugar已經(jīng)完美支持了.net aot,下面DEMO包含了 建表 、插入、查詢、刪除和更新
解壓后直接布就可以發(fā)布成AOT文件了
aot_test-master.rar
?
Nuget安裝
SqlSugarCore
增刪查改代碼
StaticConfig.EnableAot = true;//啟用AOT 程序啟動執(zhí)行一次就好了 //用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 // 在執(zhí)行前記錄 SQL 語句和參數(shù) 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(); //插入 、刪除和更新只要是實(shí)體目前測試下來 都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配置教程
創(chuàng)建一個帶AOT的類項(xiàng)目
?
?
新建一個rd.xml
<Directives> <Application> <Assembly Name="SqlSugar" Dynamic="Required All"> </Assembly> </Application> </Directives>
改項(xiàng)目文件
<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這個重點(diǎn)引用我們新建的rd.xml (這個xml要能發(fā)布出去)
?
如何讓自已代碼支持AOT
1、不能有dynamic類型 可以用object替換
2、不能有emit可以用表達(dá)式樹代替換
3、一些反射找不到構(gòu)造函數(shù)或者Type需要配置xml?
4、反射不支持根據(jù)路徑加載程序集,可以從一個類的Type中拿出來
5、發(fā)布出現(xiàn)c++錯誤,需在安裝和更新VS的地方把 c++桌面 裝上
6、發(fā)布要選x64 不支持x86 和arm
?
SqlSugar ORM詳細(xì)教程
SqlSugar?是一款 老牌 .NET 開源多庫架構(gòu)ORM框架(EF Core單庫架構(gòu)),由果糖大數(shù)據(jù)科技團(tuán)隊(duì)
維護(hù)和更新 ,開箱即用最易上手的.NET ORM框架 。生態(tài)圈豐富,目前開源生態(tài)僅次于EF?Core,但是在需要
多庫兼容的項(xiàng)目或產(chǎn)品中更加偏愛SqlSugar?【開源生態(tài)】?【視頻教程】?
?aot_test-master.rar
?
EF Core8
暫時還沒有支持AOT文章來源地址http://www.zghlxwxcb.cn/news/detail-749086.html
到了這里,關(guān)于NET8 ORM 使用AOT SqlSugar 和 EF Core的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!