它是一個使用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和使用Microsoft.Data.Sqlite的朋友的提示,請參閱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( https://github.com/sqlcipher/sqlcipher )。它提供無縫的完整DB加密,而且開銷很小。構建用於Visual Studio的VSIX是一件痛苦的事。如果您不想自己構建它,您可以從https://www.zetetic.net/sqlcipher/獲得許可。