Я намагаюся прослідкувати за прикладом у книзі Юлії Лермана "Програмування Entity Framework 2-го видання", і наступний код не буде працювати для мене:
ObjectQuery<Contact> contacts = context.Contacts
.Where("it.FirstName = "Robert"")
Я отримую таку помилку:
Argument2: неможливо перетворити з "рядка" на "System.Linq.Expresions.Expression>".
Як отримати доступ до методу ObjectQuery Builder Query? Я використовую Entity Framework 6, приклади в книзі використовують Entity Framework 4. Мій клас контексту успадковує від DbContext
, у прикладі книги контекстний клас успадковує від ObjectContext
.
Чи використовуються методи побудови запитів у Entity Framework 6?
Відповіді:
0 для відповіді № 1Якщо ви хочете використовувати рядок, вам потрібно використовувати параметризацію, а де потрібен другий аргумент із значенням.
Я думаю, що просто використовувати LINQ з лямбда-виразом є чистішим.
Спробуйте:
ObjectQuery<Contact> contacts =
context.Contacts.Where("it.FirstName = @firstname",
new ObjectParameter("firstname", firstName));
0 для відповіді № 2
Стандартні запити Linq не забезпечують перевантаження Where
з типом string
Microsoft надає бібліотеку NuGet для аналізу рядків у Lambda-виразах, які потім можуть бути використані в запитах Linq System.Linq.Dynamic який можна знайти тут:
https://www.nuget.org/packages/System.Linq.Dynamic/