EF Core, оператор LINQ '=' в VB.NET - PullRequest
2 голосов
/ 14 января 2020

У меня есть следующий код в EF Core 3.1 на языке VB. NET

Dim supplierID as string="1545464"
Dim results = (From pa In DC.product.AsNoTracking()
                            Where pa.supplierID = supplierID
                            Select pa)

Бросок исключения:

The LINQ expression 'DbSet<product>
    .Where(p => Operators.CompareString(
        Left: p.supplierID, 
        Right: __$VB$Local_supplierID_0, 
        TextCompare: False) == 0)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). 

Я нашел следующее решение:

Dim supplierID as string="1545464"
Dim results = (From pa In DC.product.AsNoTracking()
                            Where pa.supplierID.Equals(supplierID)
                            Select pa)

Правильно ли мое решение с использованием .Equals ()? На языке C#, если он работает с оператором "=="

Я создал небольшое решение, с помощью которого можно воспроизвести ошибку.

Решение имеет 4 проекта:

  • Sup.Entities (C#)
  • Sup.DAL (C#)
  • Sup.ConsoleApp1 (C#)
  • Sup. consoleAppVB (VB. NET)

Эта ошибка возникает в Sup.ConsoleAppVB (VB. NET) In VB.NET project

This результат в Sup.ConsoleApp1 (C#) In C# project

Прикрепленное решение Скачать , который включает проекты и файл SQL для создания базы данных и 1 таблица с 3 рядами.

Пожалуйста, измените строку подключения для UseSqlServer ("...") в контексте OnConfiguring

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...