Я перепробовал все ответы на подобные вопросы, опубликованные 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 ##.
Спасибо
Джефф