Проблема при использовании строковой переменной вместо литерала в запросе EF - PullRequest
0 голосов
/ 06 ноября 2018

Я перепробовал все ответы на подобные вопросы, опубликованные SO, и до сих пор не понял, что я делаю неправильно, когда пытаюсь использовать переменную в строке запроса в EF6 с Oracle. Это работает, когда я использую строковый литерал и возвращает 1 запись.

Когда я изменяю запрос на использование переменной строки, запрос каждый раз возвращает 0.

public PVI()
{           
    string MachineId = "M123";

    ASCIIEncoding ascii = new ASCIIEncoding();
    Encoder encoder = ascii.GetEncoder();
    encoder.Fallback = new EncoderReplacementFallback(string.Empty);

    //byte[] bAsciiString = ascii.GetBytes(MachineId);
    //string cleanString = ascii.GetString(bAsciiString);

    var utf8bytes = Encoding.Unicode.GetBytes(MachineId);
    string cleanString = ascii.GetString(utf8bytes);

    PriorityNoteModel1 dbPriorityNote = new PriorityNoteModel1();
    var pnQuery = (from pn in dbPriorityNote.CNTR_SCHED
                // /*1. This works*/ where pn.WORK_CENTER.EQNO == "M123" & pn.CNTR_SEQ == 1
                // /*2. This does not work*/ where pn.WORK_CENTER.EQNO == cleanString & pn.CNTR_SEQ == 1
                   /*3. This does not work*/ where pn.WORK_CENTER.EQNO == MachineId & pn.CNTR_SEQ == 1
                // /*4. This does not work*/ where pn.WORK_CENTER.EQNO == Properties.Settings.Default.MachineId & pn.CNTR_SEQ == 1
                select pn).ToList();


    if (pnQuery.Count != 0) {
    }

Весь код возвращает счетчик 0, кроме случаев, когда "M123" жестко закодирован. Я попытался преобразовать в ASCII и все различные UTF ##.

Спасибо Джефф

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