【问题标题】:SQLite scaffolding with Entity Framework Core使用 Entity Framework Core 搭建 SQLite 脚手架
【发布时间】:2016-10-25 08:45:33
【问题描述】:

当我跑步时

Scaffold-DbContext "Filename=mydatabase.sqlite3" Microsoft.EntityFrameworkCore.Sqlite

我得到一个空的上下文

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;

namespace MyNamespace
{
    public partial class mydatabaseContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite(@"Filename=mydatabse.sqlite3");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
        }
    }
}

我是不是做错了什么。这适用于 SQLite 吗?

我在数据库中有一个带有 id 和 name 的表,这只是一个简单的例子。

【问题讨论】:

  • 请将您的解决方案发布为您问题的答案。
  • 您注意到上下文中的错字了吗? optionsBuilder.UseSqlite(@"Filename=mydatabse.sqlite3") mydatabse.sqlite3 是否正确?看起来缺少一个“a”可能不相关。

标签: c# sqlite entity-framework-core


【解决方案1】:

由于连接字符串中的相对路径,它正在 bin 文件夹中创建一个新数据库。我使用了新的连接字符串。

Scaffold-DbContext "DataSource=C:\dev\mydatabase.sqlite3" Microsoft.EntityFrameworkCore.Sqlite

【讨论】:

    【解决方案2】:

    路径是相对于输出目录解析的。 (又名bin。)确保在构建时将您的数据库文件复制到输出目录。

    在 csproj 中通过将 复制到输出目录 设置为 Copy if newer 来执行此操作。

    通过将以下内容添加到您的 project.json 在 xproj 上执行此操作。

    {
      "publishOptions": {
        "include": [
          "mydatabase.sqlite"
        ]
      }
    }
    

    【讨论】:

    【解决方案3】:

    你可以试试:

    Scaffold-DbContext "DataSource=PATH\mydatabase.sqlite3 "Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models
    

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多