0

最初にコードに奇妙な問題があります:

プロジェクトでは、私のエンティティはそのように見え、コードは最初に移行をうまく行っていました。

public class MyEntity
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

このようなプロジェクトにインターフェースを追加することにしました

public interface IEntity
{
    Guid Id { get; set; }
    bool IsDeleted { get; set; }
}

私の新しいクラスは次のようになります。

public class MyEntity : IEntity
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    bool IsDeleted { get; set; }
}

ここで、Code First で移行を試みると、ここに列を追加する代わりに、コードを最初に実行しているのは次のとおりです。

  • DropForeignKey
  • ドロップインデックス
  • CreateTable MyEntity テーブルを試行し、このテーブルが既に存在することを知らせて中断します

コードが最初にそれをしようとする理由は何ですか?

4

1 に答える 1

0

EF5 を使用すると、再現できませんでした。一般に、移行では、データベースとモデルの間でメタデータが一貫しているため、コマンドが実行される順序が重要です。

これらの操作の正しい順序は次のいずれかです。

a)Enable-Migrations、Add-Migration、Update-Databaseを実行してからデータベースにデータを入力(つまり、アプリを実行)し、各モデルの変更後にAdd-MigrationとUpdate databaseを実行してからアプリを実行します

b) アプリを実行し、Enable-Migrations、モデルを変更し、Add-Migrations、Update-Database を実行し、モデルの変更が行われるたびに必ずデータベースの更新を実行してください。

また、次のように見える非常に単純な DbContext を使用していることにも注意してください。

public class EntityContext : DbContext  
{
    public DbSet<MyEntity> MyEntities { get; set; }
}
于 2012-12-10T18:11:36.340 に答える