2015-05-27 2 views
0

У меня проблема с миграцией. Некоторые веб-сайты на многолетнем опыте мигрировали нормально, некоторые нет. Итак, теперь я должен получить тип одного столбца. Существует какой-либо способ получить некоторую информацию о типе данных БД? Что-то вроде этого:Получить данные типа данных столбца в файле миграции Orchard

public int UpdateFrom4() 
{ 
     var dType = SchemaBuilder.ExecuteSql(@"select data_type from information_schema.columns where TABLE_NAME = 'MyModule_Orchard_SettingsRecord' and COLUMN_NAME = 'SomeColumn'").Interpreter; 
     if(dType != "ntext"){ 
     ...do some alternate of db 

Или как получить сеанс nHibernate? Или прямой доступ к БД? Но я не знаю путь к БД (многолетний опыт).

Большое спасибо.

ответ

0

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

Что касается базы данных является, ну, это зависит от того, где вы его положили! Если вы используете многопользовательскую систему, вы можете перейти к landlord | Admin | Tenants и просмотреть сведения для вашего арендатора. Здесь будет указан метод подключения/строка. Если режим SQL Server CE, то база данных будет находиться в папке App_Data/Sites/{nameoftenant}, но вам понадобится инструмент для ее открытия. Самый простой, если вы используете Visual Studio, - SQL Server Compact/SQLite Toolbox. С любой другой строкой соединения SQL Server Management Studio - это способ пойти. Оттуда он просто использует SQL как обычно

+0

Спасибо. Да, это не очень хороший способ получить результаты в методе миграции. Но что-то не так в миграции, и теперь у меня есть три варианта. 1) Открывайте его вручную, когда пишете, но в сотнях арендаторов. 2) Напишите приложение для фиксации баз данных. 3) Получите некоторую информацию в методе миграции и внесите изменения только в БД, где это необходимо. Итак, существует ли какая-либо возможность получить некоторую информацию о БД в методах миграции? – user1015270

+0

Это еще код .NET - вы все равно можете открыть SQLConnection и сделать свое дело. Вам просто нужно быть уверенным, что вы делаете (я уверен, что это «неподдерживается»). Например, если вы намерены удалить таблицу, добавленную функцией для виджета, вам нужно гарантировать, что не было экземпляров виджета, добавленного к слоям. Экстремальное тестирование «сухого хода» и резервное копирование ваших баз данных перед реализацией - это необходимо. Вы должны убедиться, что в конце процесса исправления версия миграции для этой функции одинакова для всех арендаторов (при условии, что все они теперь «правильные») –

+0

Вы абсолютно правы, что тестирование необходимо. И я сделал. Существовал не так много, только расширить текстовые данные типа одного столбца. Ничего не происходит. И вы уверены, что его еще .NET-код, но, как я писал в моем вопросе, я не знаю в методе миграции ничего о connectionstring конкретной базы данных. – user1015270

Смежные вопросы