Обновление-база данных кидал "не удалось загрузить ТМС сценарий.лиц. сценарии.миграций.201606220917003_updatelocalisationforportuguese.в SQL' "
Сначала я добавил миграцию в visual studio, и мой код для вызова миграции таков:
namespace Tms.Entities.Migrations { using Scripts; using System; using System.Data.Entity.Migrations; public partial class UpdateLocalisationForPortuguese : DbMigration { public override void Up() { AddColumn("dbo.Language", "LocalisationId", c => c.Guid()); CreateIndex("dbo.Language", "LocalisationId"); AddForeignKey("dbo.Language", "LocalisationId", "dbo.Localisation", "LocalisationId"); var script = ScriptHelper.LoadMigrationScript("201606220917003_UpdateLocalisationForPortuguese.sql"); Sql(script); } public override void Down() { DropForeignKey("dbo.Language", "LocalisationId", "dbo.Localisation"); DropIndex("dbo.Language", new[] { "LocalisationId" }); DropColumn("dbo.Language", "LocalisationId"); } } }
где я вызываю sql-скрипт. Я создал sql-скрипт и написал все необходимые запросы.
IF EXISTS (SELECT 1 FROM LANGUAGE WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'aa-ET') BEGIN INSERT INTO LOCALISATION VALUES ('1505ba83-a51b-487e-9935-9b1007169136') INSERT INTO LOCALISEDTEXT VALUES ('1505ba83-a51b-487e-9935-9b1007169136', 'pt-BR', '') UPDATE LANGUAGE SET LOCALISATIONID = '1505ba83-a51b-487e-9935-9b1007169136' WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'aa-ET' END IF EXISTS (SELECT 1 FROM LANGUAGE WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'af-ZA') BEGIN INSERT INTO LOCALISATION VALUES ('7774ee36-ff12-438e-8f7c-77f76403b372') INSERT INTO LOCALISEDTEXT VALUES ('7774ee36-ff12-438e-8f7c-77f76403b372', 'pt-BR', '') UPDATE LANGUAGE SET LOCALISATIONID = '7774ee36-ff12-438e-8f7c-77f76403b372' WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'af-ZA' END IF EXISTS (SELECT 1 FROM LANGUAGE WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'sq-AL') BEGIN INSERT INTO LOCALISATION VALUES ('979f748e-cbba-40c6-94cf-469a1b4bb567') INSERT INTO LOCALISEDTEXT VALUES ('979f748e-cbba-40c6-94cf-469a1b4bb567', 'pt-BR', '') UPDATE LANGUAGE SET LOCALISATIONID = '979f748e-cbba-40c6-94cf-469a1b4bb567' WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'sq-AL' END IF EXISTS (SELECT 1 FROM LANGUAGE WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'am-ET') BEGIN INSERT INTO LOCALISATION VALUES ('f420a282-d9c0-4b35-b898-67941f52efc2') INSERT INTO LOCALISEDTEXT VALUES ('f420a282-d9c0-4b35-b898-67941f52efc2', 'pt-BR', '') UPDATE LANGUAGE SET LOCALISATIONID = 'f420a282-d9c0-4b35-b898-67941f52efc2' WHERE LOCALISATIONID IS NULL AND CULTURENAME = 'am-ET' END
Когда вы набираете Update-Database в консоли пакета, он выдает ошибку, которая
Не удалось загрузить скрипт ' Tms. Entities.Скрипты.Migrations. 201606220917003_UpdateLocalisationforportuguese. sql'
В Scripthelper код
public static class ScriptHelper { public static string LoadIndex(string fileName) { var manifestResourceName = "Tms.Entities.Scripts.Indexes." + fileName; return LoadScript(manifestResourceName); } public static string LoadProcedure(string fileName) { var manifestResourceName = "Tms.Entities.Scripts.Procedures." + fileName; return LoadScript(manifestResourceName); } public static string LoadMigrationScript(string fileName) { var manifestResourceName = "Tms.Entities.Scripts.Migrations." + fileName; return LoadScript(manifestResourceName); } public static string LoadScript(string resourceName) { try { using (var scriptStream = typeof(ScriptHelper).Assembly.GetManifestResourceStream(resourceName)) using (var scriptReader = new StreamReader(scriptStream)) { string result = scriptReader.ReadToEnd(); return result; } } catch(Exception ex) { throw new Exception(string.Format("Failed to load script '{0}'", resourceName), ex); } } } }
Кто-нибудь может помочь мне решить эту проблему.
Что я уже пробовал:
Я попытался удалить миграцию и создать новую миграцию, а также попытался перестроить решение. Но, похоже, ничто не может решить эту проблему.
[no name]
можете ли вы показать мне 201606220917003_UpdateLocalisationforportuguese. sql?
user 3008
Это довольно много с 1316 строками я просто добавлю несколько добавлю несколько строк в то что будет то же самое для другого запроса с другим именем культуры и идентификатором локализации
Richard Deeming
Google ничего не знает об этом ScriptHelper
класс, или LoadMigrationScript
метод.
Если это пользовательский класс, который вы написали, нажмите кнопку "улучшить вопрос" и добавьте код из этого класса в вопрос.
Если это сторонний компонент, вам нужно будет сказать нам, какой именно.
user 3008
Я включил весь пользовательский класс scripthelper, который мы использовали для вашей ссылки