Telerik Open Access FetchStrategy многократно повторял одну и ту же строку

Цель состоит в том, чтобы заполнить свойство навигации "Принтеры" объекта состояния связанной информацией о принтере из таблицы PRINTER_STATUS в одном запросе с использованием Fetch Strategies в ORM Telerik Open Access.

таблицы

STATUS_MSG
MSG_ID           MSG_DATE
1234             '2017-10-01 00:00:00'

PRINTER_STATUS
MSG_ID           SERIAL_NO
1234             abc-def
1234             zyx-wvu 

Я получаю результаты с помощью хранимой процедуры. Так что код C# выглядит примерно так...

OAParameter param   = new OAParameter();
param.Direction     = ParameterDirection.Input;
param.ParameterName = "@msgID";
param.Value         = 1234;

List<OAParameter> parameters = new List<OAParameter>();
parameters.Add(param);

FetchStrategy ffs = new FetchStrategy();
ffs.LoadWith<STATUS_MSGS>(e => e.PrinterStatus);

IEnumerable<STATUS_MSGS> filteredMsgs = uow.DbContext.ExecuteQuery<STATUS_MSGS>(
    "uspGetStatusMsgsByID",
    CommandType.StoredProcedure,
    parameters.ToArray()); 

Стратегия выборки указывает, что она должна заполнять свойство PrinterStatus при выполнении запроса.

Что я получаю от запроса (представлен как JSON для более удобного чтения) ...

{
    "MessageID": 1234,
    "PrinterStatus": 
    [
        {
            "MesssageID" : 1234,
            "SerialNo": "zyx-wvu"
        },
        {
            "MesssageID" : 1234,
            "SerialNo": "zyx-wvu"
        }
    ]
}

Кажется, понимают, что есть две связанные записи, но извлекает вторую дважды! Я попробовал несколько различных вариантов этого, в том числе избегая хранимой процедуры и сделать вызов непосредственно с помощью DbContext...

dbContext.StatusMessages.Include<PrinterStatus>().Where(e=>e.MessageID = id).FirstOrDefault();

... получать те же результаты. Я не понимаю, почему стратегия Fetch возвращает только одну запись, дважды!

0 ответов

Другие вопросы по тегам