我使用Add-Migration和update-database创建了一个名为update-database的表,它运行良好--该表是在Server中创建的,但现在我正在创建另一个表FoodMenu。
我已经创建了一个模型类和dbset,我使用了add-migration,在迁移中创建了表,但是当我运行update-database在Server中创建表时,它不起作用。我犯了个错误
数据库中已经有一个名为“UserGold”的对象
我不知道update-database为什么要接受我以前的迁移。
Contexto:
public class RestoContext : IdentityDbContext<RestoUser>
{
public RestoContext(DbContextOptions<RestoContext> options)
: base(options)
{
}
public DbSet<Menu> Menu { get; set; }
// public DbSet<Employees> Employee { get; set; }
public DbSet<Employees> Emp { get; set; }
public DbSet<Manager> Manager { get; set; }
public DbSet<GoldMenu> GoldMenu { get; set; }
public DbSet<UserGold> UserGold { get; set; }
public DbSet<FoodMenu> FoodMenu { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}我的迁徙:
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace Resto.Migrations
{
public partial class AddusergoldToDb : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "UserGold",
columns: table => new
{
userId = table.Column<string>(nullable: false),
Usermail = table.Column<string>(nullable: true),
CardNumber = table.Column<string>(nullable: true),
Validedate = table.Column<DateTime>(nullable: false),
Amount = table.Column<float>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserGold", x => x.userId);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "UserGold");
}
}
}控制台应用程序:
PM> add-migration AddFoodMenuToDatabase
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
PM> update-database
Build started...
Build succeeded.
> fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
> Failed executing DbCommand (45ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [UserGold] (
[userId] nvarchar(450) NOT NULL,
[Usermail] nvarchar(max) NULL,
[CardNumber] nvarchar(max) NULL,
[Validedate] datetime2 NOT NULL,
[Amount] real NOT NULL,
CONSTRAINT [PK_UserGold] PRIMARY KEY ([userId])
);
> Failed executing DbCommand (45ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [UserGold] (
[userId] nvarchar(450) NOT NULL,
[Usermail] nvarchar(max) NULL,
[CardNumber] nvarchar(max) NULL,
[Validedate] datetime2 NOT NULL,
[Amount] real NOT NULL,
CONSTRAINT [PK_UserGold] PRIMARY KEY ([userId])
);
> Microsoft.Data.SqlClient.SqlException (0x80131904): There is already an object named 'UserGold' in the database.
at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite)
at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName)
at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ClientConnectionId:64024c74-897d-421e-bb48-ef96cb315f44
Error Number:2714,State:6,Class:16数据库
中已经有一个名为“UserGold”的对象
发布于 2020-10-02 08:04:15
在迁移过程中似乎存在问题,在“”中运行Ad-迁移命令。
也许你的问题是迟钝的here
https://stackoverflow.com/questions/63378506
复制相似问题