C# 在UWP应用程序中保护SQLite数据库

C# 在UWP应用程序中保护SQLite数据库,c#,uwp,entity-framework-core,.net-4.6,C#,Uwp,Entity Framework Core,.net 4.6,它是一个使用SQLite数据库的UWP应用程序。下面是此应用程序的依赖项: { "dependencies": { "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1", "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", "Micr

它是一个使用
SQLite
数据库的
UWP
应用程序。下面是此应用程序的依赖项:

{
    "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2",
    "Microsoft.Xaml.Behaviors.Uwp.Managed": "1.1.0",
    "Newtonsoft.Json": "8.0.3",
    "Template10": "1.1.*"
    },
    // ...
}
要求是:“[…]拥有从应用程序或任何其他可以打开
SQLite
数据库的应用程序访问数据库的密码”

实体框架核心似乎不支持这种情况有什么建议吗?

看看SQLCipher()。它提供无缝的全数据库加密,开销很小。构建用于VisualStudio的VSIX是一件痛苦的事情。如果您不想自己构建,您可以从获得许可证。

查看SQLCipher()。它提供无缝的全数据库加密,开销很小。构建用于VisualStudio的VSIX是一件痛苦的事情。如果您不想自己构建,您可以从获得许可。

有关使用SQLCipher和Microsoft.Data.Sqlite好友的提示,请参阅我的帖子

与EF Core一起使用它的最简单方法可能是使用与
DbContext
的开放连接

class MyContext : DbContext
{
    SqliteConnection _connection;

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        _connection = new SqliteConnection(_connectionString);
        _connection.Open();

        var command = _connection.CreateCommand();
        command.CommandText = "PRAGMA key = 'password';";
        command.ExecuteNonQuery();

        options.UseSqlite(_connection);
    }

    protected override void Dispose()
    {
        _connection?.Dispose();
    }
}
有关使用SQLCipher和Microsoft.Data.Sqlite好友的提示,请参阅我的帖子

与EF Core一起使用它的最简单方法可能是使用与
DbContext
的开放连接

class MyContext : DbContext
{
    SqliteConnection _connection;

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        _connection = new SqliteConnection(_connectionString);
        _connection.Open();

        var command = _connection.CreateCommand();
        command.CommandText = "PRAGMA key = 'password';";
        command.ExecuteNonQuery();

        options.UseSqlite(_connection);
    }

    protected override void Dispose()
    {
        _connection?.Dispose();
    }
}

我发现SQLite社区认为构建自己的是最好的。然后指定所需的确切功能和配置。但是有一些二进制文件。(在UWP上可能不起作用)真正令人失望的是@bricelam专注于我们通常免费创建的应用程序,在不浪费金钱和时间的情况下保护我们创建的数据是不可能的。我怀念SQL Compact的日子。我也怀念SQL Compact。我发现SQLite社区认为构建自己的是最好的。然后指定所需的确切功能和配置。但是有一些二进制文件。(在UWP上可能不起作用)真正令人失望的是@bricelam专注于我们通常免费创建的应用程序,在不浪费金钱和时间的情况下保护我们创建的数据是不可能的。我怀念SQL Compact的日子,我也怀念SQL Compact。