SQLite-запрос не выполняется должным образом в проекте WPF - PullRequest
0 голосов
/ 26 февраля 2020

Я работаю над приложением WPF и использую базу данных SQLite. Я могу выполнять все операции CRUD с Entity Framework, но в некоторых конкретных случаях c мне приходится использовать необработанные запросы SQL, а иногда он не возвращает то, что мне нужно.

Вот пример кода:

using (var db = new DbContext(AppIO.DatabaseFilePath)) {
    var key = 12;
    string sql = $"SELECT COUNT(*) FROM SomeTable WHERE SomeField={key}";
    var result = db.Database.ExecuteSqlCommand(sql);
}

Я упростил пример. Здесь result, то, что я получил, это -1 . Я скопировал строковое значение sql (после его создания) и выполнил в SQLiteStuido в той же базе данных, и он вернул правильное значение.

DatabaseFilePath правильно. Соединение установлено правильно. Я проверяю те же базы данных (в коде и в SQLiteStudio). Любая другая идея?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Попробуйте это:

var result = db.Database.SqlQuery<int>(sql).First();
0 голосов
/ 26 февраля 2020

Вы должны вызвать SqlQuery метод, а не ExecuteSqlCommand метод. Поскольку SqlQuery возвращает IEnumerable, вы должны вызвать Single. Это способ получения скалярных значений из запроса.

using (var db = new DbContext(AppIO.DatabaseFilePath)) {
    var key = 12;
    string sql = $"SELECT COUNT(*) FROM SomeTable WHERE SomeField={key}";
    var result = db.Database.SqlQuery<int>(sql).Single();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...