Использование: Visual Studio Community 2015 + C# + Entity Framework 6.2 + SQlite2
Я знаю, как защитить базу данных SQlite, поскольку использую приведенный ниже код для прикрепления к ней пароля:
using (sqlite2 = new SQLiteConnection("Data Source=ModuleUserDB.db"))
{
//Set password
sqlite2.SetPassword("this is my password");
}
Но это не работает с Entity Framework.
Я прочитал этот пост Как в коде предоставить пароль для строки подключения в модели данных сущности ADO.Net
но я не могу найти решение для моего случая
ModuleUserDBEntitiesModuleUserDB.dbПопытка изменить конструктор с помощью:
public partial class ModuleUserDBEntities : DbContext
{
public ModuleUserDBEntities() : base("name=ModuleUserDBEntities")
{
// Set the password of the database
this.Database.Connection.ConnectionString = @"Data Source=.\;Initial Catalog=ModuleUserDB.db;Persist Security Info=True;User ID=sa;Password=myownpassword";
}
}
Но Visual Studio застревает.
Какую самую простую строку подключения использовать в этом случае?
@Crowcoder Просто Visual Studio застревает с этой информацией в окне Inmediate Window: Шаг в: Переход через непользовательский код 'WpfApplication1.App..ctor' Шаг в: Переход через непользовательский код 'WpfApplication1.App.InitializeComponent'





Попробуйте метод ChangePassword.
using (sqlite2 = new SQLiteConnection("Data Source=ModuleUserDB.db"))
{
sqlite2.Open(); //You must open the connection first
sqlite2.ChangePassword("password here");
}
Как изменение пароля решает проблему со строкой подключения? Также в вашем коде есть ошибки.
Метод ChangePassword меняет пароль, если есть пароль, если нет, устанавливает пароль :)
Да, но как это поможет Entity Framework подключиться?
Мой ответ отвечает только на How to set password for sqlite, разве это не то, о чем просит OP?
Я это не так читаю. OP говорит: «Я знаю, как защитить базу данных SQlite ...»
да, но он также сказал, что его код не работает с entityframework .... Я не уверен, что мой тоже будет работать с entityframework, давайте подождем ответа OP :)
@zackraiyan спасибо за поддержку, с вашим кодом я получаю "System.Data.SQLite.SQLiteExcepcio" Файл не является базой данных, а не ошибкой "Код ошибки 26"
Это ошибка? Бессмысленно..проверьте ошибку..Я полагаю, это должен быть File is not a database or is encrypted или что-то в этом роде
Надеюсь, мой код вам поможет, и если да, отметьте его как ответ .. А что касается получаемой вами ошибки, это решит ее
@zackraiyan ошибка такая же: «Файл не является базой данных, а не ошибкой» Код ошибки 26 », и я открыл базу данных SQLite с помощью портативного средства просмотра, и база данных никогда не зашифровывается. Я буду продолжать попытки, спасибо за поддержку.
@zackraiyan Ваш код работает, но для базы данных вне модели - Entity Framework. Как только я защищаю базу данных кодом, другие части программы (например, список записей) перестают работать. В любом случае, спасибо, я прочитал много руководств в эти дни, и кажется сложным использовать SQlite с защитой паролем на Entity Framework.
Согласно это в строке подключения нет имени пользователя. И, пожалуйста, используйте более подходящее описание проблемы, чем «Visual Studio застревает». Если есть исключение, предоставьте полную информацию об исключении.