У меня возникла проблема с запросом к моей локальной базе данных sqlite. Ниже приведен текущий код:
public static Dictionary<Guid, string> GetHashedComanyMembers(List<Guid> IdsToSearch)
{
using (var dbContext = new DbEntities(GetConnectionString()))
{
var test = dbContext.<myTable>.Where(cm => IdsToSearch.Contains(cm.IdToFind));
}
}
Переменная test содержит набор данных emtpt. А теперь к моему вопросу.
Если установлена переменная
var firstGuid = IdsToSearch[0]
и я изменяю следующую строку на
var test = dbContext.<myTable>.Where(cm => cm.IdToFind == firstGuid);
тест содержит два набора, которые я хочу получить.
Если я позволю мне показать (первый) сгенерированный оператор и запустить его непосредственно в базе данных, он также не сможет что-то найти. Но (второе) утверждение успешно.
Так у кого-нибудь есть идеи, где я ошибаюсь, или можно указать на ошибку?
Заранее спасибо, Стив
Первая версия:
SELECT
[Extent1].[ValueId] AS [ValueId],
[Extent1].[ValueFirstName] AS [ValueFirstName],
[Extent1].[ValueLastName] AS [ValueLastName],
[Extent1].[ValueLastChanged] AS [ValueLastChanged],
[Extent1].[ValueLastChangedBy] AS [ValueLastChangedBy]
FROM [tblValue] AS [Extent1]
WHERE '28826de0-27ea-42ab-9104-234ee289de16' = [Extent1].[ValueId]
Во-вторых,
SELECT
[Extent1].[ValueId] AS [ValueId],
[Extent1].[ValueFirstName] AS [ValueFirstName],
[Extent1].[ValueLastName] AS [ValueLastName],
[Extent1].[ValueLastChanged] AS [ValueLastChanged],
[Extent1].[ValueLastChangedBy] AS [ValueLastChangedBy]
FROM [tblValue] AS [Extent1]
WHERE [Extent1].[ValueId] = @p__linq__0
Редактировать
Если я вызову метод ToList () в моей таблице до Where (), то все в порядке, потому что все содержимое таблицы будет перечислено, и я вызову Contains в этом списке. Но это не может быть решением сначала выбрать всю таблицу.
Поэтому я думаю, что проблема заключается в разговоре, который ведет Linq, потому что сгенерированные операторы проверяют Guid как string
, но он внутренне сохраняется как Blob
.
Во втором утверждении guid не устанавливается напрямую. Есть заполнитель, который будет заменен СУБД? И этот запрос в порядке.
Так есть идеи, с чего начать?