У меня есть база данных с большинством клавиш таблиц, которые являются Guid. Проблема в том, что если я попытаюсь выполнить оператор LINQ to Entity, и я сравниваю Guid, который у меня есть для Guid, который существует в одном из объектов, на которые я ссылаюсь, SQL никогда не запускается! Я протестировал это, используя SQL Server 2008 R2 с запуском SQL Profiler, и при выполнении инструкции sql явно не делает этого в базе данных. Если я выберу сравнение Guid, то sql передается SQL Server, и я получаю результат обратно.Entity Framework 5 Проводит сравнение результатов сравнения без выполнения SQL
Например:
var itemType = new Guid("27733204-C1E6-4F93-BEAD-63C2C8EBC299");
var items from myDBContext.Items.Where(x => x.itemType == itemType);
Я пробовал другие методы, такие, как x.itemType.CompareTo (ItemType), но ничего не работает. По сути, если у меня есть Guid, который я хотел бы использовать в любом типе предложения Where, который выходит за рамки самой инструкции linq, я не получаю абсолютно никакого SQL, выдаваемого серверу.
Я надеюсь, что у кого-то есть ответы. В настоящее время используется Entity Framework 5 с C# 4.5.
Какая версия .NET? –
Вы используете одинарные кавычки, где вы должны использовать двойные кавычки. Поэтому у меня такое ощущение, что вы не публикуете свой фактический код. То, что у вас здесь, не будет компилироваться. – Khan
из предоставленного кода вы не оцениваете выражение linq: myDBContext.Items.Where (x => x.itemType == itemType). Если это проблема, попробуйте myDBContext.Items.Where (x => x.itemType == itemType) .ToArray(); –