Jan. 2nd, 2010

metaclass: (Default)
reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
и
reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);

Схема результата, как это не смешно, отличается не только наличием значения(true,false) в поле "IsKey" а еще и тем, что во втором случае добавляются поля первичных ключей всех связанных в запросе по join таблиц и заодно зачем-то rowversion поля. Отличить, какое поле от какой таблицы-алиаса в запросе, очевидно, никак.

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

В общем, ADO.NET выглядит так, как будет хотели сделать как можно больше работы вместо того, кто будет использовать это дело, но при этом получилось, что использование ограничено теми вариантами, которые пришли им в голову, а сделать по другому - начинаются пляски с бубнами.

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

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 9th, 2025 01:22 pm
Powered by Dreamwidth Studios