Я испытываю ошибку при попытке создать базу данных, используя следующий код. Обратите внимание, что проблема не возникает, если строка подключения не передается. Также проблема возникает, когда я запускаю программу в IDE. Это не происходит, если я запускаю программу .exe или если я запускаю модульные тесты в IDE.
Однако, если база данных создается с помощью модульных тестов или с помощью .EXE, таблица __MigrationHistory
создается в разделе основных таблиц, а не в системных таблицах.
public Context(string connString, bool AddInitialRecords )
: base(connString ?? "MyContextName")
{
this.CheckDatabase(AddInitialRecords);
}
public void CheckDatabase(bool AddInitialRecords)
{
if (this.Database.Exists())
{
// upgrade stuff
}
else
{
Database.Create(); // error occurs here
// seeding stuff
}
}
У меня нет проблемы, если я просто использую что-то вроде
var db1 = new Context();
db1.Database.CreateIfNotExists();
Я нашел здесь некоторую документацию, но она меня смущает. Я устанавливаю из "стабильной сборки", конечно, я не испытываю что-то с 2012 года? Что я могу делать не так с PM?
Сообщение об ошибке для проблемы....
System.Data.Entity.Core.EntityCommandExecutionException
HResult = -2146232004 Сообщение = Произошла ошибка при выполнении определения команды. Смотрите внутреннее исключение для деталей.
Source = EntityFramework StackTrace: в System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior поведения) InnerException: System.Data.SqlClient.SqlExid имя_объекта __MigrationHistory. Источник =.Net SqlClient Поставщик данных ErrorCode = -2146232060 Класс = 16 LineNumber = 1 Number = 208 Процедура = "" Сервер =.\SQLEXPRESS State = 1 StackTrace: at System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое значение breakConnection, Action'1 wrapCloseInAction) при System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean, Boolean callerHasConnectionLock asyncClose) в System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean & dataReady) в System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() в System.Data.SqlClient.SqlDataReader.get_MetaData() в System.Data. в System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, логический асинхронный , Тайм-аут Int32, Задача & задача, логическое asyncWrite) в System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, метод String, TaskCompletionSource'rite системный объект во время выполнения). Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, метод String) в System.Data.SqlClient.SqlCommand.ExecuteReader(commandBehaviorlата ) в System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <> c__DisplayClassb.b__8() в System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch [TInterceptionContext, TResultConxt] intertetertext операции взаимодействия (операция)., Action'1 выполняется, Action'1 выполняется) в System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader (команда DbCommand, DbComma ndInterceptionContext interceptionContext) в System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader (поведение CommandBehavior) в System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoremandomExe Entity Entity EntityCommandCommandeomCommand: Command()