Невозможно «выбрать» новый POCO из двух исходных таблиц с помощью ServiceStack Orm Lite - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь выбрать POCO, используя данные из нескольких разных исходных таблиц, используя ServiceStack.OrmLite .Я придерживаюсь общего синтаксиса, показанного в C # 7 Tuples , но возвращаю конкретный POCO вместо Tuple.Я получаю синтаксический анализ SqlExpression.

 var exp = Db.From<TransactionProduct>()
                        .Join<Transaction>()
                        .Join<Product>()
                        .Join<Transaction, Device>()
                        .Select<Transaction, Device>((t, d) =>
                        new BottleBox
                        {
                            Location = d.Name,
                            Notes = t.Note,
                            Timestamp = t.TimeStamp
                        });

Ошибка:

Error CodeInvalidOperationException
Messagevariable 't' of type 'BMS.ServiceModel.Transactions.Transaction' referenced from scope '', but it is not definedStack

Кажется, в моем операторе Select в концеSqlExpression определение "exp", но я не могу понять, что происходит ....

1 Ответ

0 голосов
/ 12 октября 2018

В пользовательской проекции выбора должен использоваться анонимный тип:

.Select<Transaction, Device>((t, d) =>
    new {
      Location = d.Name,
      Timestamp = t.TimeStamp
    });

Вы должны использовать POCO при выборе результирующего набора в конкретный конкретный тип:

var results = db.Select<BottleBox>(q);
...