![](/img/trans.png)
[英]EF7 RC1 The term 'Scaffold-DbContext' is not recognized
[英]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(TaskCompletionSource1 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(IEnumerable1 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.