1

私は私が理解できないように見える問題を抱えています。ドメインに2つのエンティティが定義されているとします。人と文書。以下はドキュメントの定義です:

public class Document
{
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public string Title { get; set; }
    public DateTime Date { get; set; }

    public virtual Person Owner{ get; set; }
    public virtual Person AssignedTo { get; set; }
}

現在、EF CTP4が初期化時にSQLテーブルを作成するとき、Person.IdにマッピングされるフィールドはOwner_idが1つだけです。何を試しても、AssignedToのフィールドは作成されません。

これを解決できるものはありますか?

よろしく、

avsomeren

4

1 に答える 1

0

あなたのコードは、データベースに目的のスキーマを完全に作成しました。 代替テキスト

DB でこのスキーマを取得できない場合は、オブジェクト モデルの残りの部分に何か問題があると思います。完全なオブジェクト モデルを投稿していただけますか?

別の解決策:

現在の Document クラスで目的の結果が得られますが、Code First の規則を利用して、ナビゲーション プロパティの FK を明示的に指定することもできます。

public class Document
{
    public int Id { get; set; }
    [Required][StringLength(255)]
    public string Title { get; set; }
    public DateTime Date { get; set; }

    public int OwnerID { get; set; }
    public int AssignedToID { get; set; }

    public virtual Person Owner { get; set; }
    public virtual Person AssignedTo { get; set; }

}

Code First は、主キー (int) と同じデータ型を持つ<navigation property name><primary key property name> (例: OwnerID) という名前のプロパティは、関係の外部キーを表すと推測します。

これにより、基本的に同じ DB スキーマが得られます。加えて、ドキュメント オブジェクトに FK があり、モデルを操作するための究極の柔軟性を提供するナビゲーション プロパティがあります。

于 2010-11-26T21:14:02.910 に答える