【发布时间】:2019-03-25 20:35:31
【问题描述】:
我使用 .NET Core 2.2 使用 SQLite 数据库创建了一个 ASP.NET MVC 网站。到目前为止,它运作良好。当我想向连接字符串添加特定于 SQLite 的关键字时,麻烦就开始了,例如
Data Source=~\\App_Data\\MyDb.db; Version=3; DateTimeFormat=UnixEpoch; DateTimeKind=Utc
现在我明白了
不支持关键字:'版本'
我这样注册数据库
// ConfigureServices(IServiceCollection services)
var conn = Configuration.GetConnectionString("MyDB").Replace("~", _env.ContentRootPath);
services.AddDbContext<MyDBContext>(options => options.UseSqlite(conn));
那么MyDBContext就有了
public partial class MyDBContext : DbContext
{
public MyDBContext() { }
public SatrimonoContext(DbContextOptions<MyDBContext> options)
: base(options) { }
public virtual DbSet<Book> Book { get; set; }
}
然后我在我的页面模型中使用它
private SatrimonoContext _db;
public BookAccuracyListModel(SatrimonoContext dbContext)
{
_db = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
}
从那里我可以通过 LINQ 正常访问 _db。
在发帖之前,我对该主题进行了大量研究,我发现最好的回复是this
此提供程序是 Microsoft.Data.Sqlite。这些连接字符串是 对于 System.Data.SQLite。
我们支持以下关键字:缓存、数据源、模式。
和this
我遇到的问题是因为我试图创建一个 SqlConnection 而不是 SQLiteConnection。解决这个变化 我的问题。
但是,如果我做得“正确”,我就不会创建 SqlConnection,因此无法将其更改为 SQLiteConnection。另一个响应不包含解决方案。
那么我怎样才能让它以正确的方式工作呢?
【问题讨论】:
-
如果您发现文档说唯一支持的关键字是 x、y 和 z,为什么您认为使用其他关键字会神奇地起作用?我唯一能想到的就是不要使用
Microsoft.Data.Sqlite,这可能意味着你不能使用 EF Core
标签: c# sqlite entity-framework-core