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 возвращает только одну запись, дважды!