У меня есть обычная хранимая процедура с параметрами, возвращающими поля разных таблиц, как я могу сопоставить этот пользовательский код, хранящийся в сущности? Я просто хочу использовать как значения только для чтения для отчета, который я не хочу сохранять, или что-то в этом роде. Я пытаюсь добавить дополнительные поля к наиболее похожим объектам, но когда я выполняю метод в коде, дополнительные поля равны нулюcodefluent custom хранимая процедура
ответ
Решение 1: Использование вида
Вид позволяет агрегировать данные из разных объектов.
<Article>
<Id />
<Name />
<Lines typeName="LineCollection" />
<cf:method name="LoadArticlesByCommand" body="load(string commandName) from ArticleByCommand where CommandName = @commandName" />
<cf:view name="ArticleByCommand" autoLightweight="true">
<ArticleName expression="Name"/>
<ArticleQty expression="Lines.Quantity" />
<CommandName expression="Lines.Command.Name" />
</cf:view>
</Article>
<Command>
<Id />
<Name />
<Lines typeName="LineCollection" />
</Command>
<Line setType="List">
<Article typeName="Article" key="true" />
<Command typeName="Command" key="true" />
<Quantity typeName="int" />
</Line>
- http://blog.codefluententities.com/2014/04/22/views-auto-lightweight-and-the-modeler/
- https://www.softfluent.com/documentation/Views_PersistentViews.html
Решение 2: Используя облегченный объект
Вместо того чтобы создавать вид, вы можете можете создать легкий объект, который содержит только свойство, используемое по хранимой процедуре.
<cf:entity name="Person" lightweight="true">
<cf:property name="FirstName" typeName="string" />
<cf:property name="lastName" typeName="string" />
<cf:method name="ComputeBalance"
body="load() raw"
rawBody="SELECT 'John' AS FirstName, 'Doe' AS LastName" />
</cf:entity>
Решение 3: Пользовательское отображение
Для более конкретных значений или типов, пользовательский метод может быть предусмотрено для отображения значений базы данных для .NET типов. Этот настраиваемый метод будет вызываться с параметром DataReader
, что означает, что разработчик мог делать все, что захочет.
<cf:entity name="Sample">
<cf:method name="LoadPair" body="raw" rawBody="SELECT 1234,5678"
returnTypeName="CodeFluent.Runtime.Utilities.Pair<System.Int32,System.Int32>"
cfom:methodName="On{0}" />
<cf:snippet>
private static CodeFluent.Runtime.Utilities.Pair<int,int> OnLoadPair(System.Data.IDataReader reader)
{
return new Pair<int, int>(reader.GetInt32(0), reader.GetInt32(1));
}
</cf:snippet>
</cf:entity>
Вы также можете использовать OnAfterReadRecord
или OnBeforeReadRecord
правила
Если это не так важно, чтобы вы сопоставить результаты пользовательской хранимой процедуры в сущности, чем другой вариант заключается в использовании встроенной поддержкой DataSets.
http://blog.codefluententities.com/2011/06/22/dataset-support-in-codefluent-entities/
<cf:method name="LoadAllCities" body="raw" returnTypeName="System.Data.DataSet">
SELECT $Address::City$ FROM $Address$
</cf:method>
.
DataSet ds = Address.LoadAllCities();
foreach (DataTable table in ds.Tables)
{
foreach (DataRow row in table.Rows)
{
Console.WriteLine("City: " + row[0]);
}
}
После повторного чтения вы задаете вопрос Я предоставляю другой ответ.
В ответ на ту часть, где вы сказали «Я пытаюсь добавить дополнительные поля к наиболее похожим объектам, но когда я выполняю метод в коде, дополнительные поля равны нулю». Следующие шаги должны решить эту проблему.
- Выполнение одной из автоматически созданных хранимых процедур в SQL Management Studio.
- Выполнение хранимой процедуры, которую вы создали вручную.
- Убедитесь, что имена полей, возвращенные обеими хранимыми процедурами, совпадают.
Я думаю, что вышеупомянутое решение вашей непосредственной проблемы, но мне все еще не нравится решение. Причина в том, что вы сказали, что выбрали наиболее похожее сущность. Я думаю, что это вызовет проблемы в будущем, особенно если хранимая процедура не сопоставляется всем свойствам сущностей.
Я бы рекомендовал либо легкий объект, либо вид, либо DataSet.
- 1. Spring Integration jdbc хранимая процедура custom rowmapper
- 2. Вызов хранимая процедура внутри хранимая процедура
- 3. хранимая процедура
- 4. хранимая процедура
- 5. Хранимая процедура
- 6. хранимая процедура
- 7. хранимая процедура
- 8. CLR Хранимая процедура v регулярная SQL-хранимая процедура
- 9. Oracle Хранимая процедура
- 10. Squirrel Client Хранимая процедура
- 11. SQL хранимая процедура
- 12. SQLServer Хранимая процедура
- 13. C# хранимая процедура scope_identity
- 14. Помогла ли хранимая процедура?
- 15. хранимая процедура sql server
- 16. mysql хранимая процедура вопрос
- 17. Хранимая процедура для Ланга
- 18. Хранимая процедура MemSQL
- 19. Delphi Postgres хранимая процедура
- 20. PHPUnit и хранимая процедура
- 21. Хранимая процедура вывода неправильно
- 22. Хранимая процедура SQL Server
- 23. Хранимая процедура - Дата
- 24. PL/SQL Хранимая процедура
- 25. хранимая процедура CONVERT ОШИБКА
- 26. общая хранимая процедура
- 27. Хранимая процедура тзд 8152
- 28. Результат поиска хранимая процедура
- 29. PHP + PostgreSQL + хранимая процедура
- 30. SQL-хранимая процедура