|
|
|
Вопрос к гуру LinqToSql
|
|||
|---|---|---|---|
|
#18+
Есть прога, которая считывает структуру LinqToSql из сторонних сборок. Никаких там пиратств и т.п. Приблуда для администраторов БД для возможности синхронизации структуры БД. Но это не суть. Короче, читаю структуру через MetaModel. Встала проблема совместимости серверов MS SQL. Т.е. 2005 и 2008. Нужно корректно обрабатывать разные типы данных. Например, в 2008-й может встречаться тип geometry, а в 2005-й нет, соответственно. Если пытаться синхронизировать структуру БД с существующего LinqToSql, то нужно четко сравнить версии серверов. Иначе можно наворотить дел. Дак вот. как можно считать из метаданных объекта LinqToSql версию сервера, с которого он построен? У объекта контекст есть свойство Connection, но пока его не поднимешь - версию сервера не определить, естественно. Нашел Свойство MetaModel.ProviderType, которое возвращает тип провайдера. Пробую на разных сборках - везде по умолчанию идет тип SqlProvider. Хотя у него есть потомки Sql2000Provider , Sql2005Provider , Sql2008Provider . Вроде бы через них можно было бы, но, похоже, эти провайдеры устанавливаются принудительно только. А по умолчанию ставится базовый. Т.е. LinqToSql получается работает с версией сервера только при открытом соединении. И в себе потом эти данные не хранит по умолчанию. Если так - то конец. Блин, может я все-таки ошибаюсь? А если не ошибаюсь, то как можно другим путем выцепить версию сервера без подключения к нему, используя только данные самой сборки? Может я просто не вижу простого решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2009, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=36257324&tid=1351637]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
22ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 313ms |

| 0 / 0 |
