我使用 .NET Core 2.2 创建了一个 ASP.NET MVC 网站,并使用 SQLite 数据库。到目前为止,一切顺利。但是当我想在连接字符串中添加 SQLite 特定关键字时,问题就开始了,例如:
Data Source=~\\App_Data\\MyDb.db; Version=3; DateTimeFormat=UnixEpoch; DateTimeKind=Utc
现在我明白了
关键字不受支持:'version'
我像这样注册数据库
// ConfigureServices(IServiceCollection services)
var conn = Configuration.GetConnectionString("MyDB").Replace("~", _env.ContentRootPath);
services.AddDbContext<MyDBContext>(options => options.UseSqlite(conn));
然后,我的DBContext有
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。
在发布这里之前,我对这个主题进行了大量研究,我找到的最好的答复是这个
这个提供程序是Microsoft.Data.Sqlite。那些连接字符串是System.Data.SQLite的。
我们支持以下关键字:Cache、Data Source、Mode。
和这个
我遇到的问题是因为我试图创建一个SqlConnection而不是SQLiteConnection。改变这个解决了我的问题。
然而,如果我做得“正确”,我不会创建SqlConnection,因此无法将其更改为SQLiteConnection。另一个回复没有提供解决方案。
那么如何以正确的方式使其工作?
Microsoft.Data.Sqlite
,但这意味着你可能无法使用EF Core。 - Camilo Terevinto