它是使用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
数据库的应用程序访问数据库#34;
实体框架核心似乎不支持这种情况。 有什么建议吗?
答案 0 :(得分:2)
有关使用SQLCipher和使用Microsoft.Data.Sqlite的朋友的提示,请参阅我的https://jsfiddle.net/0b5rh4cg/帖子。
与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();
}
}
答案 1 :(得分:0)
看看SQLCipher(https://github.com/sqlcipher/sqlcipher)。它提供无缝的完整DB加密,而且开销很小。构建用于Visual Studio的VSIX是一件痛苦的事。如果您不想自己构建它,您可以从https://www.zetetic.net/sqlcipher/获得许可。