IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> EF+ SQLite Code First 开发 -> 正文阅读

[大数据]EF+ SQLite Code First 开发

前言:

? ? ? ? ?Entity Framework6 作为开源的O/RM框架(源码:GitHub - dotnet/ef6: This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.),自身实现了Microsoft SQL Server 提供程序和Microsoft SQL Server Compact Edition 提供程序。同时可使用其他第三方的各种数据库提供程序:Oracle、MySQL、PostgreSQL、SQLite、Salesforce、DB2 和 SQL Server等。

? ? ? ? ?Entity Framework6 自身实现的Microsoft SQL Server 提供程序可以实现Code First开发,建议先看看这个帖:Entity Framework MSSQL Code First 开发 - 周波斯 - 博客园

? ? ? ? ?本文主要介绍Entity Framework6实现SQLite数据库的Code First开发。

? ? ? ? ?由于Entity Framework6自身未实现SQLite数据库的提供程序,所以要实现SQLite数据库的Code First开发。需要实现两个功能:1、实现SQLite数据库的CRUD操作,2、实现SQLite数据库的迁移(Migration)功能。

废话有点多了,还是要多动

正文:

1、创建一个控制台项目,如下图:

2、安装nuget包:System.Data.SQLite 和?SQLite.CodeFirst,如下二图:

3、修改App.config配置文件,对System.Data.SQLite引用的invariant值加后缀:.EF6,如下图:

4、在App.config配置文件中,添加SQLite数据库连接串,如下代码:

<connectionStrings>
    <add name="CourseraContext" connectionString="Data Source=|DataDirectory|\Coursera.sqlite" providerName="System.Data.SQLite.EF6"/>
  </connectionStrings>

? ??(注:|DataDirectory| 表示项目的相对路径:/bin/debug 或 /bin/release。 如是webform,则为相对路径:/App_Data)

5、添加模型类Course和Student,如下代码:

? ? ? Course.cs

public class Course
    {
        public int Id { get; set; }
        public string Name { get; set; }

        //使用虚拟方法的作用是:将启用实体框架的延迟加载功能。 
        //延迟加载是指在您尝试访问这些属性时,这些属性的内容将自动从数据库加载。
        public virtual List<Student> Students { get; set; }
    }

? ? ? Student.cs

public class Student
    {
        public int Id { get; set; }

        public string FirstName { get; set; }
        public string LastName { get; set; }
        //使用虚拟方法的作用是:将启用实体框架的延迟加载功能。 
        //延迟加载是指在您尝试访问这些属性时,这些属性的内容将自动从数据库加载。
        public virtual Course Courses { get; set; }
    }

6、添加数据库上下文类CourseraContext(类目必须与第4步骤的数据库连接串名称相同),如下代码:

? ? ? CourseraContext.cs

public class CourseraContext: DbContext
    {
        public DbSet<Course> Courses { get; set; }
        public DbSet<Student> Students { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //实现自动Migration
            var initializer = new SqliteDropCreateDatabaseWhenModelChanges<CourseraContext>(modelBuilder);
            Database.SetInitializer(initializer);
        }
    }

7、编写主程序Program.cs,实现在控制台中输入课程名并保存到数据库中,如下代码:

? ? ?Program.cs

class Program
    {
        static void Main(string[] args)
        {
            EnterCourse();
        }

        protected static void EnterCourse()
        {
            string name = "";
            while (name != "0")
            {
                Console.WriteLine("请输入课程:");
                name = Console.ReadLine();

                using (var db = new CourseraContext())
                {
                    Course course = new Course();
                    course.Name = name;
                    db.Courses.Add(course);
                    db.SaveChanges();
                }
            }
        }
    }

8、运行程序,按提示输入课程名:English,点击回车按键,如下图:

? ? ? 然后打开项目下的/bin/Debug目录,找到数据库文件:Coursera.sqlite (这个名字和App.config配置文件中的数据库连接串中的数据库名一致)。

? ? ? 查看数据库,可以看到表:Courses和Students都自动创建了,并且刚刚输入的课程名English也已保存到Courses表中。

? ? ? 我用的是官方提供的:SQLite Expert Personal 5.x 个人免费版,可以自行下载:http://www.sqliteexpert.com/download.html)里面却没有任何表,如下图:

9、修改模型类Course,增加属性:Url,如下代码:

public class Course
    {
        public int Id { get; set; }
        public string Name { get; set; }

        /// <summary>
        /// 新增的属性Url
        /// </summary>
        public string Url { get; set; }

        //使用虚拟方法的作用是:将启用实体框架的延迟加载功能。 
        //延迟加载是指在您尝试访问这些属性时,这些属性的内容将自动从数据库加载。
        public virtual List<Student> Students { get; set; }
    }

? ? ?再次运行程序,按提示输入课程名:数学,点击回车按键,然后查看数据库,可以看到Courses表增加了新字段Url,如下图:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:10:56  更:2022-05-08 08:12:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:59:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码