EF Core迁移失败,表已创建

时间:2018-11-13 13:27:15

标签: c# ef-core-2.1

这是我的DbContext类

public class BlogContext : DbContext
{
    public BlogContext (DbContextOptions<BlogContext> options)
        : base(options)
    { }
    public DbSet<User> Users { get; set; }
    public DbSet<Post> Posts { get; set; }
    public DbSet<Comment> Comments  { get; set; }
}

这是我在掘金控制台中输入的命令,直到出现错误为止

  

PM> add-migration AddNotNull
  EF Core工具版本“ 2.1.1-rtm-30846”比运行时版本“ 2.1.3-rtm-32065”更旧。更新工具以获取最新功能和错误修复。   Microsoft.EntityFrameworkCore.Infrastructure [10403]         实体框架核心2.1.3-rtm-32065使用提供程序'Microsoft.EntityFrameworkCore.SqlServer'初始化了'BlogContext',选项为:无   要撤消此操作,请使用Remove-Migration。
  PM>更新数据库
  EF Core工具版本“ 2.1.1-rtm-30846”比运行时版本“ 2.1.3-rtm-32065”更旧。更新工具以获取最新功能和错误修复。   Microsoft.EntityFrameworkCore.Infrastructure [10403]         实体框架核心2.1.3-rtm-32065使用提供程序'Microsoft.EntityFrameworkCore.SqlServer'初始化了'BlogContext',选项为:无   Microsoft.EntityFrameworkCore.Database.Command [20101]         已执行DbCommand(11毫秒)[Parameters = [],CommandType ='Text',CommandTimeout = '30']         SELECT OBJECT_ID(N'[__ EFMigrationsHistory]');   Microsoft.EntityFrameworkCore.Database.Command [20101]         已执行DbCommand(3毫秒)[Parameters = [],CommandType ='Text',CommandTimeout = '30']         SELECT OBJECT_ID(N'[__ EFMigrationsHistory]');   正在应用迁移'20181113132251_AddNotNull'。   Microsoft.EntityFrameworkCore.Database.Command [20101]         已执行DbCommand(7毫秒)[Parameters = [],CommandType ='Text',CommandTimeout = '30']         选择[MigrationId],[ProductVersion]         来自[__EFMigrationsHistory]         ORDER BY [MigrationId];   Microsoft.EntityFrameworkCore.Migrations [20402]         正在应用迁移'20181113132251_AddNotNull'。   无法执行DbCommand(5毫秒)[Parameters = [],CommandType ='Text',CommandTimeout = '30']

CREATE TABLE [Users] (
[IDUser] int NOT NULL IDENTITY,
[Username] nvarchar(max) NOT NULL,
[Password] nvarchar(max) NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY ([IDUser]));
  

System.Data.SqlClient.SqlException(0x80131904):数据库中已经存在一个名为“ Users”的对象。      在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔值breakConnection,操作1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction)      在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔调用方HasConnectionLock,布尔asyncClose)      在System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean和dataReady)      在System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串methodName,布尔异步,Int32超时,布尔asyncWrite)      在System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary 2个parameterValues)处      在Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection连接,IReadOnlyDictionary 2 parameterValues) at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary 2个参数值)处      在Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands,IRelationalConnection连接)      在Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)      在Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration,String contextType)      在Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase。<> c__DisplayClass0_1。<。ctor> b__0()      在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action操作)   ClientConnectionId:123d7ce8-1ece-4ad9-aa48-bd44c7179be1   错误号:2714,状态:6,类别:16   数据库中已经有一个名为“用户”的对象。

我所做的就是将[Required()]添加到我的大多数字段中。 很抱歉格式化。因此,SO认为创建表是此引号中的代码块。

编辑:问题的解决方法是Database.EnsureCreated()方法创建数据库时不进行任何迁移,也不进行任何禁用(拒绝?)迁移,因此这就是为什么我无法创建任何迁移的原因。

0 个答案:

没有答案