老WinForm中一个执行文件使用SQLite数据库

        EF6在老WinForm中停止更新了,但如果只是在win10上面使用,老的.net Framework 4.8框架有一个优势,编译后的执行文件很小。还有一些老类库也只能在老的.net Framework 4.8框架使用,所以微软还是保留了老的.net Framework 4.8框架。

        在老的.net Framework 4.8框架中,DB First模型中,可以像EFcore一样简单一条指令就建立数据库的连接和实体类轻松的使用吗?哦,可以的,用SqlSugar来ORM Sqlite, 用Costura.Fody打包成一个exe。

        1、VS2022 建一个老WinForm程序

2、安装这几个类库,其它类库会自己带出来

System.Data.SQLite

Costura.Fody

Newtonsoft.Json

SqlSugar

3、按SqlSugar的官网说明,加Sqlite数据库的连接代码:

namespace ormtest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //创建数据库对象 (用法和EF Dappper一样通过new保证线程安全)
            SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "datasource=car.db",
                DbType = SqlSugar.DbType.Sqlite,
                IsAutoCloseConnection = true
            },

            db => {
                db.Aop.OnLogExecuting = (sql, pars) =>
                 {         
                  }; 
            });

            //查询表的所有
            var list = Db.Queryable<Car>().ToList();

            label1.Text = list.Count.ToString();

          //  Db.DbFirst.IsCreateAttribute().CreateClassFile("D:\\mycode2023\\ormtest\\Models", "ormtest");

        }
    }
}

这条代码,就是自动产生实体类,就是我想要的,第二个参数是名字空间:

Db.DbFirst.IsCreateAttribute().CreateClassFile("D:\\mycode2023\\ormtest\\Models", "ormtest");

4、编译后,在release目录中,发现Sqlite的dll还没有全部打包进exe,需要做如下配置:

FodyWeavers.xml文件中,这样配置:

<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  <Costura>
    <Unmanaged32Assemblies>
 SQLite.Interop
 </Unmanaged32Assemblies>
    <Unmanaged64Assemblies>
 SQLite.Interop
 </Unmanaged64Assemblies>
  </Costura>
</Weavers>

5、执行编译,把ormtest.exe和数据库car.db拷贝到桌面,运行,OK,一个执行文件单独运行,读取了car数据库中的Car表里面有7条记录。

查询数据,可以把全表都放到list中再用LINQ来查询。虽然没有EFcore方便,但也已经很不错了,很简单的在老框架中使用起来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值