/ / Де Метод Builder Query з параметрами Entity SQL Помилка в Entity Framework - c #, entity-framework

Де метод Query Builder з параметрами Entity SQL Помилка в Entity Framework - c #, entity-framework

Я намагаюся прослідкувати за прикладом у книзі Юлії Лермана "Програмування 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/