2016-09-29 75 views
0

这是一个使用SQLite数据库的UWP应用程序。下面,依赖此应用程序:保护UWP应用程序中的SQLite数据库

{ 
    "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数据库” 。

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

回答

1

请参阅我的Encryption in Microsoft.Data.Sqlite文章,了解有关在Microsoft.Data.Sqlite中使用SQLCipher和好友的提示。

与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(); 
    } 
} 
+0

为什么我找不到已编译的库? –

+0

我发现SQLite社区认为构建你自己是最好的。然后指定所需的确切功能和配置。但[wxSQLite3](https://github.com/utelle/wxsqlite3/releases)有一些二进制文件。 (可能无法在UWP上工作) – bricelam

+0

@bricelam真的令人失望,我们通常会免费创建应用程序,而不会浪费金钱和时间来保护我们创建的数据。我错过了SQL Compact的日子。 –

相关问题