ここに私のモデルクラスがあります:
public abstract class BaseEntity
{
[Key]
public Guid Guid { get; set; }
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
public int Id
{
get;
set;
}
}
public class Menu : Abstract.BaseEntity
{
public string Title { get; set; }
public string Url { get; set; }
}
public class SpaceShipEntities : DbContext
{
public DbSet<Menu> Menu { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
私は移行を使用します。そして、私の構成クラスがあります:
internal sealed class Configuration : DbMigrationsConfiguration<SpaceProject.Models.SpaceShipEntities>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(SpaceProject.Models.SpaceShipEntities context)
{
context.Menu.AddOrUpdate(
c => c.Title,
new Menu() { Guid = Guid.NewGuid(), Title = "Главная" }
);
}
}
空のデータベースでパッケージ コマンド「Update-Database -Verbose」を使用すると、新しい行がデータベースに挿入されました。しかし、「Update-Database -Verbose」を 2 回目に使用し、シード メソッドが行を更新しようとすると、次のエラーが発生します。
レコードの更新中にエラーが発生しました。詳細については、内部例外を参照してください。---> System.InvalidOperationException: 列テンプレート「Identity」の変更はサポートされていません。列:「ID」。表: 「CodeFirstDatabaseSchema.Menu」。