在Entity Framework Core的Code-First中设置SQLite的日志模式

7

我正在使用Entity Framework的DBContext,在创建数据库的过程中,使用类似于这个教程中的过程。

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Filename=blog.db");
    }
}

并使用类似以下代码来保存:

using (var context = new BloggingContext())
{
    context.Add(blog);
    await context.SaveChangesAsync();
}

我该如何将日志模式设置为WAL?

1个回答

5

EF7的Sqlite提供程序仅支持一小部分连接字符串选项,因此您需要手动执行一些命令:

var context = new BloggingContext();
var connection = context.Database.GetDbConnection();
connection.Open();
using (var command = connection.CreateCommand())
{
    command.Text= "PRAGMA journal_mode=WAL;";
    command.ExecuteNonQuery();
}

你可以将这个放在构造函数或者工厂函数中。

相关的文章另一个问题


5
这需要为每个连接都完成还是只需要完成一次? - jjxtra
journal_mode 在 SQLite 数据库中是持久的(与大多数其他 PRAGMA 不同),在设置时保持不变。因此,在您的代码中根本不需要执行此操作(只需在数据库创建后执行一次,即使用 sqlite3 命令行客户端)。请参阅 https://www.sqlite.org/pragma.html#pragma_journal_mode。 - Dynalon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接