簡體   English   中英

EF7 RC1:數據庫中已經有一個名為“”的對象

[英]EF7 RC1: There is already an object named '' in the database

免責聲明 :我知道還有其他問題與我的標題相似。 但是,其他人並未使用EF7 RC1,並且pm命令有所不同。

我的問題是,無論我做什么,我都無法使用EF7創建表。 另外,我無法強制執行任何操作,-ignorechanges甚至-script,因為這些選項似乎已從命令中刪除。

我的上下文是

public class EventsContext : DbContext//ContextBase
    {
        public DbSet<Publisher> Publishers { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings[Constants.Database.CONTEXT_NAME].ConnectionString);
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            const string entityName = "Publisher";
            builder.HasSequence<long>(entityName).StartsAt(1).IncrementsBy(1);

            builder.Entity<Publisher>(o =>
            {
                o.HasKey(x => x.Id);
                o.Property(x => x.Id).HasDefaultValueSql($"NEXT VALUE FOR {entityName}");
                o.Property(x => x.LoggedUserId).IsRequired();
                o.Property(x => x.CreatedDate).IsRequired().HasDefaultValue(DateTime.SpecifyKind(DateTime.UtcNow, DateTimeKind.Utc));
                o.Property(x => x.UpdatedDate).IsRequired();
                o.Property(x => x.Deleted).IsRequired().HasDefaultValue(false);
                o.Property(x => x.RowVersion).ValueGeneratedOnAddOrUpdate().IsConcurrencyToken();

                o.ToTable(Constants.Database.TableNames.PUBLISHER);
                o.Property(x => x.Name).HasMaxLength(Constants.DataFields.Length.MEDIUM_TEXT);
                o.Property(x => x.Email).HasMaxLength(Constants.DataFields.Length.LONG_TEXT);
                o.Property(x => x.FacebookAccount).HasMaxLength(Constants.DataFields.Length.LONG_TEXT);
                o.Property(x => x.TwitterAccount).HasMaxLength(Constants.DataFields.Length.LONG_TEXT);
            });
            builder.Ignore<Event>();
        }
    }

那就是我基本上只是玩序列和行版本。

我的出版商課程是

public class Publisher
{

    public virtual long LoggedUserId { get; set; }
    public virtual DateTime CreatedDate { get; set; }
    public virtual DateTime UpdatedDate { get; set; }
    public virtual byte[] RowVersion { get; set; }

    public virtual long Id { get; protected set; }
    public virtual bool Deleted { get; set; }
    public virtual string FacebookAccount { get; set; }
    public virtual string TwitterAccount { get; set; }
    public virtual string Email { get; set; }
    public virtual string Name { get; set; }

    public virtual IList<Event> Events { get; set; }

}

add-migration init

我懂了

 public partial class init : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateSequence(
                name: "Publisher");
            migrationBuilder.CreateTable(
                name: "Publisher",
                columns: table => new
                {
                    Id = table.Column<long>(nullable: false, defaultValueSql: "NEXT VALUE FOR Publisher"),
                    CreatedDate = table.Column<DateTime>(nullable: false, defaultValue: new DateTime(2016, 2, 24, 14, 50, 56, 456, DateTimeKind.Unspecified)),
                    Deleted = table.Column<bool>(nullable: false, defaultValue: false),
                    Email = table.Column<string>(nullable: true),
                    FacebookAccount = table.Column<string>(nullable: true),
                    LoggedUserId = table.Column<long>(nullable: false),
                    Name = table.Column<string>(nullable: true),
                    RowVersion = table.Column<byte[]>(nullable: true),
                    TwitterAccount = table.Column<string>(nullable: true),
                    UpdatedDate = table.Column<DateTime>(nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Publisher", x => x.Id);
                });
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropSequence("Publisher");
            migrationBuilder.DropTable("Publisher");
        }
    }

之后

update-database

我懂了

正在應用遷移'20160224145056_init'。 System.Data.SqlClient.SqlException(0x80131904):數據庫中已經有一個名為“ Publisher”的對象。 在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException異常,布爾值BreakConnection,操作1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction)在System.Data.SqlClient.TdsParser .System.Data.SqlClient.TdsParser.TryRun(ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)at Run。在System.Data.SqlClient.SqlCommand處運行RunExecuteNonQueryTds(String methodName,布爾異步,Int32超時,布爾asyncWrite)在System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.Data.Entity.Storage.Internal.RelationalCommand.<>c.<ExecuteNonQuery>b__13_0(DbCommand cmd, IRelationalConnection con) at Microsoft.Data.Entity.Storage.Internal.RelationalCommand.Execute[T](IRelationalConnection connection, Func 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.Data.Entity.Storage.Internal.RelationalCommand.<>c.<ExecuteNonQuery>b__13_0(DbCommand cmd, IRelationalConnection con) at Microsoft.Data.Entity.Storage.Internal.RelationalCommand.Execute[T](IRelationalConnection connection, Func 3操作,字符串executeMethod,布爾型openConnection,布爾型closeConnection )處Microsoft.Data.Entity.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection連接,布爾manageConnection)處Microsoft.Data.Entity.Storage.RelationalCommandExtensions.ExecuteNonQuery(IEnumerable 1 commands, IRelationalConnection connection) at Microsoft.Data.Entity.Migrations.Internal.Migrator.Execute(IEnumerable Microsoft.Data.Entity.Migrations.Internal.Migrator.Migrate(String targetMigration)(Microsoft.Data.Entity.Design.MigrationsOperations.UpdateDatabase(String targetMigration,String contextType)處的1 commands, IRelationalConnection connection) at Microsoft.Data.Entity.Migrations.Internal.Migrator.Execute(IEnumerable 1 RelationalCommands) Microsoft.Data.Entity.Design.OperationE上的.Data.Entity.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration,String contextType) xecutor.UpdateDatabase。<> c__DisplayClass0_1。<。ctor> b__0()at Microsoft.Data.Entity.Design.OperationExecutor.OperationBase.Execute(Action action)ClientConnectionId:c34ffd41-714b-4412-a20f-8e18a58b58c1錯誤編號:2714,狀態:6,Class:16數據庫中已經有一個名為“ Publisher”的對象。

原來,我在數據庫上有重復的名稱。 序列和表具有相同的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM