私はいくつかのモデルとデータベースを持っていますが、何かをリンクする外部キーはありません。これは私のプロジェクトに大きな弱点があるようですので、私は自分のモデルに外部キーを挿入し、おそらく私のモデルに基づいてデータベースを再生成しようとしています。モデルの外部キー(コードファースト)
特に一対多の関係で、外部キーがどのように機能するかを理解するのに問題があります。この例では
は、私は、製品や製品を持っており、各製品は、複数のレビューを持っていることがあります。
私はいくつかの注釈を削除し、モデルを凝縮する属性ました。
製品モデル/エンティティ:
public class Product
{
public int ProductId { get; set; }
public int OwnerId {get; set; }
public string Title { get; set; }
public int Rating { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
public string Description { get; set; }
}
レビューモデル/エンティティ:
public class Review
{
public int ReviewId { get; set; }
public int ProductId { get; set; }
public int WriterId { get; set; }
public string Title { get; set; }
public string Body { get; set; }
}
私は審査ののProductIdへの製品のProductIdの上の外部キー制約を望みます。どうすればこの仕事をすることができますか?
をModelBuilderのがOnModelCreatingの内側に次の特定され、正しい現在、私は( 'modelBuilder.Entityを使用).ToTable( "レビュー"、SCHEMANAME: "MYSCHEMA");' I?私のコードに基づいてデータベースを再生成する必要がありますか? –
Johannes
@Johannes:はい、 'OnModelCreating'にあります。現在のマッピングではエンティティをテーブル名にのみマッピングします。マッピングコードを追加するには、 'modelBuilder.Entity()....'を繰り返してください。 DBを再生成する必要はありません。また、DB初期化子( 'Database.SetInitializer (null)')と一致するように、DBスキーマとモデルの「並列」変更を行うこともできます。 DBは生産中です。開発段階にある場合は、EFがDBスキーマを再生成するのを助けます。これは、それがモデルと一致することを保証するためです。または、EF 4.3の「移行」機能を使用することもできます。 –
Slauma