Linq To Entities Расшифровка указанных c столбцов - PullRequest
0 голосов
/ 09 января 2020

Мое приложение - MVC 5, с использованием EF 6.3. Я пытаюсь расшифровать два столбца, используя следующее:

var grid = db.mytable.Where(c => c.Item== "Order").Select(c => new
            {
                FirstName = Encryption.Decrypt(c.FirstName),
                LastName = Encryption.Decrypt(c.LastName),
                Id = c.Id
             }).ToList();

Я получаю эту ошибку:

LINQ to Entities не распознает метод 'System.String Decrypt (System. String) ', и этот метод нельзя преобразовать в выражение хранилища.

Ответы [ 2 ]

1 голос
/ 09 января 2020

Проблема в том, что EF пытается перевести код из Select в SQL, но для метода Encryption.Decrypt нет перевода в SQL. Вместо этого вам нужно выполнить запрос, а затем выполнить расшифровку набора результатов.

Это можно сделать, добавив ToList() перед Select, чтобы принудительно выполнить

var grid = db.mytable.Where(c => c.Item== "Order").ToList().Select(c => new
            {
                FirstName = Encryption.Decrypt(c.FirstName),
                LastName = Encryption.Decrypt(c.LastName),
                Id = c.Id
             }).ToList();
0 голосов
/ 09 января 2020

Вам нужно .ToList(), чтобы ваш запрос стал Немедленное выполнение запроса . После этого вы можете сделать что-то, как вы будете sh.

var filteredTable = db.mytable.Where(c => c.Item== "Order").ToList();
var grid = filteredTable .Select(c => new
            {
                FirstName = Encryption.Decrypt(c.FirstName),
                LastName = Encryption.Decrypt(c.LastName),
                Id = c.Id
             }).ToList();
...