В чем причина того, что столбцы результатов исключаются из операторов автоматического выбора в PetaPoco? - PullRequest
1 голос
/ 30 марта 2012

Если у меня есть класс POCO с установленным атрибутом ResultColumn, а затем, когда я выполняю вызов Single<Entity>(), мой столбец результатов не отображается.Я установил свой столбец как столбец результата, потому что его значение должно всегда генерироваться ограничением по умолчанию для столбца SQL.Я не хочу, чтобы этот столбец вводился или обновлялся на бизнес-уровне.Я пытаюсь сказать, что тип моей колонки - это простой тип данных SQL, а не связанный тип сущности (как я видел ResultColumn, используемый в основном для них).

Глядя на код, я вижу эту строку в PetaPoco:

// Build column list for automatic select
QueryColumns = (   from c in Columns
                   where !c.Value.ResultColumn
                   select c.Key
               ).ToArray();

Почему столбцы результата исключаются из оператора автоматического выбора, потому что, как я понимаю, их природа предназначена только для чтения.Так что в выбирается только .Я вижу этот сценарий, когда столбец на самом деле является связанным типом объекта (сложным).Хорошо.но тогда у нас должен быть отдельный атрибут, такой как ComputedColumnAttribute, который всегда будет возвращаться в выборках, но никогда не использоваться при вставках или обновлениях ...

Почему команда PetaPoco решила исключить столбцы результатов из выборок?* Как мне тогда читать столбцы результатов?

1 Ответ

2 голосов
/ 30 марта 2012

Я не могу ответить, почему создатель не добавил их в автоматический выбор, хотя я бы предположил, что это потому, что ваш конкретный вариант использования не является основным, который они рассматривали. Если вы посмотрите на примеры и пояснения для этой функции на их сайте, она больше ориентирована на дополнительные столбцы, которые вы возвращаете в объединении или расчете (например, описание в таблице поиска для значения кода). В этих ситуациях их нельзя было автоматически добавить в выборку, поскольку они не являются частью базовой таблицы.

Так что если вы хотите использовать этот атрибут и получить значение для свойства, вам придется использовать собственный оператор выбора вручную, а не полагаться на автоматический выбор.

Конечно, прелесть использования PetaPoco заключается в том, что вы можете легко изменить его в соответствии со своими потребностями, либо создав новый атрибут, как вы предлагали выше, либо изменив код, который вы показали, чтобы не исключать эти поля из выбора ( при условии, что вы не используете ResultColumn в других ситуациях типа соединения).

...