65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Entity Framework 7 的 CodeFirst 与 SQLite

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (16投票s)

2015 年 9 月 16 日

CPOL

3分钟阅读

viewsIcon

95666

本技巧演示了如何在桌面和移动应用程序上使用 Entity Framework 7 内置的 SQLite 堆栈。

引言

本技巧演示了使用 SQLite 数据库的 CodeFirst 模式。

在 Microsoft Entity Framework 7 之前,所有之前的版本都缺少对 SQLite 的内置支持。尽管 SQLite 通过自己的扩展支持 EntityFramework,但与出色的 MS SQL Server 支持相比,总会缺少一些功能。CodeFirst 只是一个例子。

背景

Entity Framework 7 是一个非常特别的版本,因为它基于完全重新设计的代码库。它不仅支持更多数据库和平台(包括 Xamarin)。设置已经变得简单直接。因此,本技巧的想法不是提供一个可运行的解决方案,而是通过逐步说明来支持您使用 Entity Framework 7 和 SQLite。

安装

要设置 EF7 解决方案,只需创建一个 C# 类库、WPF 应用程序或 Windows 窗体应用程序。

单击“文件 > 新建 > 项目”并选择您要使用的项目模式,或者直接使用现有的解决方案。

Entity Framework 7 已经成为一个模块化的代码库。要开始编码,请使用 NuGet 包管理器下载最新版本。安装 EF7 需要 NuGet 2.8.6(或更高版本)。确保在安装更新后重新启动 Visual Studio。

现在您可以安装 EF7 了

  • 在解决方案资源管理器中右键单击您的解决方案。
  • 选择“管理解决方案的 NuGet 包”。
  • 在导航中单击“在线”,并确保选择了 nuget.org。
  • 将“仅稳定版”过滤器替换为“包括预发布版”。
  • 搜索“EntityFramework.SQLite”并在您的项目中安装该包。

最后一步是 SQLite 库本身。过去,在 system.data.sqlite.org 上有特殊的 ADO.NET 提供程序。使用 EF7,您可以使用 www.sqlite.org/download.html 上默认的预编译 SQLite 库。将此库添加到您的项目中

  • 在解决方案资源管理器中右键单击您的项目,然后选择“添加 > 现有项目”
  • 选择 SQLite.dll 并单击“确定”。
  • 右键单击解决方案资源管理器中现在添加的文件,然后选择“属性”。
  • 对于“生成操作”,选择 Content,对于“复制到输出目录”,选择 如果较新则复制

编码

EntityFramework 是一个 ORM 框架。这意味着它将数据库元素映射到代表数据库的类。Entity Framework 将数据库映射到两个主要类

  • Entity 类表示数据库中的表结构。
  • Context 类表示您的数据库。

这些类是开始工作所需的最小集合。

可以使用以下代码定义第一个简单表。这是我们的第一个实体

public class MyEntity
{
    public string MyColumn { get; set; }
}

上下文是一个继承自 DbContext 的类。属性 MyTable 将类 MyEntity 定义为数据库的表。方法 OnConfiguring 将上下文与数据库连接起来

public class MyContext: DbContext
{
    // This property defines the table
    public DbSet<MyEntity> MyTable {get;set;}

    // This method connects the context with the database
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connectionStringBuilder = new SqliteConnectionStringBuilder {DataSource = "test.db"};
        var connectionString = connectionStringBuilder.ToString();
        var connection = new SqliteConnection(connectionString);

        optionsBuilder.UseSqlite(connection);
    }
}

现在,上下文已连接到数据库 test.db,该数据库将位于应用程序二进制文件所在的同一目录中。当然,数据库尚不存在。当然,这就是 CodeFirst 模式的名称来源。以下代码段创建数据库

using (var db = new MyContext())
{
    db.Database.EnsureCreated();
}

结果,创建了一个名为 test.db 的 SQLite 文件。仅此而已。

关注点

我们现在创建了一个非常简单的数据库,其中包含一个包含一列的表。现在有趣的是如何添加数据、定义主键、创建索引等...

历史

  • 第一次修订
© . All rights reserved.