1

まず最初に。考えられるすべての用語を使用して回答を探しました。より良い方法で質問された場合は、お詫び申し上げます。

ある種の非エンティティ固有のメタデータを保持するエンティティがあるとします。

public class MetaData
{
    public int Id { get; set; }
    public string SomeProperty { get; set; }
}

そして、これは別のエンティティによって参照されます:

public class SomeEntity
{
    [???]
    public string MetaDataId { get; set; }
}

public class CompletelyDifferentEntity
{
    [???]
    public string MetaDataId { get; set; }
}

置き換えることができる属性はありますか??? これでコードファーストの方法で動作するようになりますか? 関係を EF に通知するためだけに、MetaData プロパティを各オブジェクトに追加する必要がありますか? 、、、 属性 (および忘れていた他の属性) を試しましたが、うまくいきませんでしたRequiredForeignKeyInversePropertyAssociation

これを設定するために流暢な API にフォールバックする必要がある場合、メタデータ エンティティで設定できますか、それともエンティティごとに個別に指定する必要がありますか?

NB : MetaData プロパティを実際に取得する必要がない場合、答えは異なりますか? つまり、ID はグループ化にのみ使用されますか?

4

1 に答える 1

0

外部キー関係をモデルにマップするには、関連する 2 つのエンティティの少なくとも 1 つにナビゲーション プロパティが必要です。

public class MetaData
{
    public int Id { get; set; }
    public string SomeProperty { get; set; }

    public ICollection<SomeEntity> SomeEntities { get; set; }
    public ICollection<CompletelyDifferentEntity>
        CompletelyDifferentEntities { get; set; }
}

...また...

public class SomeEntity
{
    //...

    public int MetaDataId { get; set; }
    public MetaData MetaData { get; set; }
}

public class CompletelyDifferentEntity
{
    //...

    public int MetaDataId { get; set; }
    public MetaData MetaData { get; set; }
}

これらのプロパティ名では、EF が をナビゲーション プロパティMetaDataIdの外部キー プロパティとして認識するため、データ アノテーションは必要ありません。は null 非許容型であるMetaDataため、リレーションシップは必須です (オプションではありません) 。MetaDataId

于 2013-07-28T12:16:26.657 に答える