NET8 ORM 使用AOT SqlSugar

news2025/1/9 15:37:59

.NET AOT8 基本上能够免强使用了, SqlSugar ORM也支持了CRUD 能在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要能发布出去)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1221108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Nuxt】Nuxt3 动态导入图片 src

nuxt3 不再支持 require 动态导入资源&#xff0c;因此需要我们将图片放到 public 目录下&#xff0c;这样我们就可以动态导入了 比如下面 &#x1f447;&#xff1a; 感谢 Nuxt3遇见的坑&#xff08;四&#xff09;&#xff1a;图片动态渲染之后打包路径问题以及打包css样式…

MySQL5.7安装详细过程--window系统

1、Window安装MySQL5.7详细过程 1.1、下载MySQL5.7安装包 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 1.2、将文件解压到盘符中 你可以解压到你想解压的位置&#xff0c;放在C或其他盘符都可以。 我放在了C盘中&#xff1a;C:\Program Files\my…

视频一键转码:批量转换MP4视频的技巧

随着数字媒体设备的普及&#xff0c;视频文件在生活中扮演着越来越重要的角色。而在处理视频文件时&#xff0c;有时需要将其转换为不同的格式以适应不同的需求。其中&#xff0c;MP4格式因其通用性和高质量而备受青睐。本文详解云炫AI智剪如何一键转码的技巧&#xff0c;帮助批…

Java内存区域速览

文章目录 JVM的组成加载字节码流程 运行时数据区-总览1. 程序计数器2. 虚拟机栈栈帧栈的运行原理 3. 本地方法栈4. 堆内存(Java Heap虚拟机对堆 的划分1. 年轻代&#xff08;Young Generation&#xff09;&#xff1a;2. 老年代&#xff08;Old Generation&#xff09;&#xf…

GPT-4V新玩法登顶GitHub热榜,随手一画就能生成网页!web开发者:感受到了威胁

西风 发自 凹非寺 量子位 | 公众号 QbitAI 随手一画就能生成网页&#xff01;GPT-4V新玩法登顶GitHub热榜&#xff0c;狂揽3000&#x1f31f;&#xff1a; 现在只要简单画一画&#xff0c;框一框&#xff0c;点击执行&#xff1a; “啪”地一下&#xff0c;一个带有各种“按钮…

设计模式-状态模式-笔记

状态模式State 在组件构建过程中&#xff0c;某些对象的状态经常面临变化&#xff0c;如何对这些变化进行有效的管理&#xff1f;同时又维持高层模块的稳定&#xff1f;“状态变化”模式为这一问题提供了一种解决方案。 经典模式&#xff1a;State、Memento 动机&#xff08…

R语言绘制精美图形 | 火山图 | 学习笔记

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 教程图形 前言 最近的事情较多&#xff0c;教程更新实在是跟不上&#xff0c;主要原因是自己没有太多时间来学习和整理相关的内容。一般在下半年基本都是非常忙&#xff0c;所有一个人的精力和时间有限&#x…

modbusRTU通信简单实现(使用NModbus4通信库)

本文实现ModbusRTU通信&#xff0c;使用的是NModbus4通信库&#xff0c;使用 Modbus Slave是一个模拟Modbus协议从机的上位机软件&#xff0c;主要用于模拟测试跟其他主机设备通信的过程。与之成套存在的另一个软件--Modbus Poll&#xff0c;则是模拟Modbus协议主机的上位机软件…

基于ssm+vue交通事故档案系统

摘要 摘要是对文章、论文或其他文本的主要观点、结论和关键信息的简洁概括。由于你没有提供具体的文章或主题&#xff0c;我将为你创建一个通用的摘要。 本文介绍了一种基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;和Vue.js的交通事故档案管理系统的设计与实现…

Unity Text文本首行缩进两个字符的方法

Text文本首行缩进两个字符的方法比较简单。通过代码把"\u3000\u3000"加到文本字符串前面即可。 参考如下代码&#xff1a; TMPtext1.text "\u3000\u3000" "这是一段有首行缩进的文本内容。\n这是第二行"; 运行效果如下图所示&#xff1a; 虽…

Linux(3):Linux 的文件权限与目录配置

把具有相同的账户放入到一个组里面&#xff0c;这个组就是这两个账户的 群组 。在访问资源&#xff08;操作系统中计算机的资源&#xff09;时&#xff0c;可以让这个组里面的所有用户都具有访问权限。 每个账号都可以有多个群组的支持。 在我们Liux 系统当中&#xff0c;默认的…

ROS话题(Topic)通信:自定义msg - 例程与讲解

在 ROS 通信协议中&#xff0c;数据是以约定好的结构传输的&#xff0c;即数据类型&#xff0c;比如Topic使用的msg&#xff0c;Service使用的srv&#xff0c;ROS 中的 std_msgs 封装了一些原生的数据类型&#xff0c;比如&#xff1a;Bool、Char、Float32、Int64、String等&am…

为什么Go是后端开发的未来

近年来&#xff0c;Go 编程语言的流行度迅速增加。Go 最初由 Google 开发&#xff0c;迅速成为后端开发中最受欢迎的语言之一&#xff0c;特别是在分布式系统和微服务的开发中。本文将讨论为什么 Go 是后端开发的未来。 Go 简介 Go&#xff0c;又称为 Golang&#xff0c;是由…

7、使用真机调试鸿蒙项目

此处以华为手机为例&#xff0c;版本为鸿蒙4.0. 一、打开手机调试功能 1、打开开发者模式 打开“设置”—“关于手机”&#xff0c;连续点击“软件版本”可打开开发者模式 2、开启USB调试功能 打开“设置”—“系统更新”—“开发者选项”&#xff0c;下拉找到“USB调试”…

1-2 暴力破解-模拟

模拟&#xff1a;根据题目要求编写代码 可分为&#xff1a;图形排版&#xff08;根据某种规则输出特定图形&#xff09;、日期问题、其他模拟 一.图形排版 1.输出梯形&#xff08;清华大学&#xff09; 法一&#xff1a;等差数列 分析&#xff1a;每行的星号个数为等差数列2n2…

【Java 进阶篇】JQuery 遍历 —— 无尽可能性的 `each` 之旅

在前端的征途中&#xff0c;操作元素是开发者不可避免的任务之一。而在 JQuery 中&#xff0c;each 方法则是处理这个任务的得力助手。本文将深入探讨 each 方法的奇妙之处&#xff0c;以及它与原生的 for...of 循环的关系&#xff0c;带你领略无尽可能性的遍历之旅。 起步&am…

9款AI让你在2分钟内创建任何东西

1、免费AI绘画&#xff1a;LeonardoAi一个免费的 Midjourney 替代品&#xff0c;能够快速创建高品质和风格统一的视觉图片&#xff0c;帮你释放创造力。 2、 模板编辑AI&#xff1a;Canva 将所有AI的强大功能汇聚于一处&#xff0c;为你的工作流程注入超级动力。 3、构建网站&…

基于51单片机步进电机节拍步数正反转LCD1602显示( proteus仿真+程序+原理图+设计报告+讲解视频)

基于51单片机步进电机节拍步数正反转LCD1602显示 &#x1f4d1;1. 主要功能&#xff1a;&#x1f4d1;2. 讲解视频&#xff1a;&#x1f4d1;3. 仿真&#x1f4d1;4. 程序代码&#x1f4d1;5. 设计报告&#x1f4d1;6. 设计资料内容清单&&下载链接&#x1f4d1;[资料下…

SpringCloud FeignClient声明式服务调用采坑记录(A调用服务B/C,B/C重启后必须重启A后才能成功调用配置项)

SpringCloud FeignClient声明式服务调用&#xff08;A调用服务B/C&#xff0c;B/C重启后必须重启A后才能成功调用配置项采坑记录&#xff09; 1. 报错&#xff08;info级别的警告信息&#xff09;2. 原因&#xff1a;使用了默认了cache负载均衡&#xff0c;或者禁用了ribbonLoa…

数据结构02附录01:顺序表考研习题[C++]

图源&#xff1a;文心一言 考研笔记整理~&#x1f95d;&#x1f95d; 之前的博文链接在此&#xff1a;数据结构02&#xff1a;线性表[顺序表链表]_线性链表-CSDN博客~&#x1f95d;&#x1f95d; 本篇作为线性表的代码补充&#xff0c;每道题提供了优解和暴力解算法&#xf…