2016-09-29 77 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的日子。 –

相關問題