这是我的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(TaskCompletionSource1 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连接,IReadOnlyDictionary2 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()方法创建数据库时不进行任何迁移,也不进行任何禁用(拒绝?)迁移,因此这就是为什么我无法创建任何迁移的原因。