在 ASP.NET 核心项目中使用没有 entity Framework 的 SQLite 数据库

using SQLLite Database without entity Framework in ASP.NET Core Project

我想在 ASP.NET 核心项目中使用 SQlLite 数据库,但不使用 Entity Framework。

我想我应该使用 class,它派生自 DbProviderFactory 并且适合 SQLLite 数据库(类似于 System.Data.SqlClient.SqlClientFactory.Instance用于 sqlServer) 但我找不到它。

我遇到的所有示例都建议我使用 entity framework,但我不想使用它。

你在官方仓库中有它: https://github.com/aspnet/Microsoft.Data.Sqlite

这是一个例子: http://www.bricelam.net/2015/04/29/sqlite-on-corefx.html

编辑:添加 link 内容以防将来消失。

提供商建立在 System.Data.Common 合同之上。该合同是 ADO.NET 提供商模型的一个非常小的子集。对于熟悉 ADO.NET.

的任何人来说,使用该提供程序应该感觉非常自然
using (var connection = new SqliteConnection("" +
    new SqliteConnectionStringBuilder
    {
        DataSource = "hello.db"
    }))
{
    connection.Open();

    using (var transaction = connection.BeginTransaction())
    {
        var insertCommand = connection.CreateCommand();
        insertCommand.Transaction = transaction;
        insertCommand.CommandText = "INSERT INTO message ( text ) VALUES ( $text )";
        insertCommand.Parameters.AddWithValue("$text", "Hello, World!");
        insertCommand.ExecuteNonQuery();

        var selectCommand = connection.CreateCommand();
        selectCommand.Transaction = transaction;
        selectCommand.CommandText = "SELECT text FROM message";
        using (var reader = selectCommand.ExecuteReader())
        {
            while (reader.Read())
            {
                var message = reader.GetString(0);
                Console.WriteLine(message);
            }
        }

        transaction.Commit();
    }
}

批处理

库添加到本机 SQLite 接口的唯一真正的功能是批处理。本机接口一次只支持编译和执行一条语句。这个库以一种应该感觉完全透明的方式实现批处理。这是使用批处理的示例。

using (var connection = new SqliteConnection("Data Source=hello.db"))
{
    var command = connection.CreateCommand();
    command.CommandText =
        "UPDATE message SET text = $text1 WHERE id = 1;" +
        "UPDATE message SET text = $text2 WHERE id = 2";
    command.Parameters.AddWithValue("$text1", "Hello");
    command.Parameters.AddWithValue("$text2", "World");

    connection.Open();
    command.ExecuteNonQuery();
}

平台:

目前,Microsoft.Data.Sqlite适用于以下平台。

  • .NET 框架
  • 单声道
  • .NET 核心
  • .NET 本机
  • CoreCLR
  • Windows 通用