• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

Linux 楼上那个蜀黍 1656次浏览 0个评论

上一篇我们梳理了CodeFist的一般流程,本篇我们讨论如何在一套代码中,支持SQL Server和SQLite的切换。同时从本篇开始,我们从.NET Core 3.1 迁移到.NET 5。
相信.NET 到了5这个版本,所有人都不会再怀疑某软跨平台的决心。而且SQL Server也从2017版本开始支持Linux。但是我相信在Linux上使用Visual Stuido Code时,搭配SQLite更能体现某软现任CEO崽卖爷田不心疼的精神。
SQLite是非常常见的数据库,最大的特点就是零部署,以文件的形式存在与Application中,极大地方便了客户端软件的安装。那么我们在做一些小型项目时,为了方便部署。就选择将免费的SQL Server Express替换成不要钱的SQLite。后者的作者在前些年宣布将SQLite贡献给全人类,放弃一切权力,非常的伟大,我表示由衷的钦佩。
首先我们按照上一篇《.NET Core学习笔记(9)——Entity Framework Core之Code First》搭建如下结构的工程,以实现对SQL Server的访问。

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

和上一篇稍有不同的是,我将之前DataAccess工程加了后缀SQLServer,同时建立了一个新的空Library叫DataAccess.SQLite。
为了能够支持SQLite,我们需要通过NuGet给DataAccess.SQLite工程添加EntityFrameworkCore.Sqlite和EntityFramework.Tools两个引用。

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

值得一提的是,这里EntityFrameworkCore的引用版本从之前的3.1.x升级到了5.0.2。这是因为从本篇开始,示例工程将全部升级到.NET 5版本。也就是说,再也不用区别作为启动项的.NET Core 3.1工程,和作为Library的.NET Standard 2.0了。某软最终创造了“生命的大和谐”(该词解释权归梁羽生先生所有)。

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

话说我们到现在还没有创建SQLite数据库文件……我一般是去下载DB Browser for SQLite 来创建*.db。只需新建一个空数据库文件即可,数据库表将通过EntityFrameworkCore来创建。DB Browser for SQLite是一个常见的SQLite管理工具,当然还有很多其他的收费或免费的工具。

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

将新建的SwitchDB.db文件拷贝到启动项SwitchDatabase工程中,并将属性中的Copy to Output Directory更改为Copy if newer,SwitchDB文件会在编译后拷贝到运行目录。
同时不要忘记给SwitchDatabase工程添加对DataAccess.SQLite工程的引用。

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

我们将Class1.cs修改为TodoSQLiteContext,和SQLServer所用的DbContext唯一的不同只有连接字符串。

namespace DataAccess.SQLite
{
    public class TodoSQLiteContext : DbContext
    {
        public DbSet<TodoItem> TodoItems { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite("Data Source=SwitchDB.db");
    }
}

通过前篇提到的,在Package Manager Console窗口中使用Add-Migration和Update-Database命令来创建数据库表到SQLite数据库中。

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

在完成上述步骤后,当前工程适配SQLite的工作即已完成。接下来,就是在SwitchDatabase工程中的Program文件中,将原先连接到SQLServer的TodoContext替换成TodoSQLiteContext。

namespace SwitchDatabase
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            using (var dbContext = new TodoSQLiteContext())
            //using (var dbContext = new TodoContext())
            {
                var count = dbContext.TodoItems.Count();
                var item = new TodoItem { Name = $"test{++count}" };
                dbContext.Add(item);
                dbContext.SaveChanges();
            }
        }
    }
}

按F5运行程序,然后再通过DB Browser for SQLite打开..\SwitchDatabase\bin\Debug\net5.0目录下的SwtichDB.db文件,即可以看到我们插入的数据了。

.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

本篇我们介绍了如何通过EntityFrameworkCore切换支持SQLServer和SQLite的基本概念。
GitHub:
https://github.com/manupstairs/EntityFrameworkCoreSamples/tree/main/SwitchDatabaseSample


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明.NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite
喜欢 (0)

您必须 登录 才能发表评论!

加载中……