2

0..1 から 0..1 の関係を作成したいのですが、何らかの理由でデータベースに挿入しようとすると、Entity Framework から次のように言われ続けます。

「リレーションシップの外部キー プロパティを公開していないエンティティの保存中にエラーが発生しました。単一のエンティティを例外のソースとして識別できないため、EntityEntries プロパティは null を返します。保存中の例外の処理は、外部キー プロパティを公開することで簡単に行うことができます。エンティティ タイプの主要なプロパティです。詳細については、InnerException を参照してください。"

私のコードの一部:

public class Usable {

    public int ID { get; set; }

    //[ForeignKey("ObjectOfInterest")] -> uncommenting this causes:
      //The ForeignKeyAttribute on property 'MentionID' on type
      //'MetaDataModeller.Models.Core.Category' is not valid. The navigation property
      //'ObjectOfInterest' was not found on the dependent type 
      //'MetaDataModeller.Models.Core.Category'. The Name value should be a valid 
      //navigation property name.
    //[ForeignKey("Mention")] -> uncommenting this makes no difference
    public int? MentionID { get; set; }
    public virtual ObjectOfInterest Mention { get; set; }
}

public class ObjectOfInterest {

    public int ID { get; set; }

    public virtual Usable Use { get; set; }
}

私の DbContext の先祖は、オーバーライドされた OnModelCreating に次のコードを持っています。

modelBuilder.Entity<Usable>()
    .HasOptional(usable => usable.Mention)
    .WithOptionalDependent(obj => obj.Use);

では、0..1 から 0..1 の関係を作成することは可能ですか? どのように?/ なぜだめですか?/どうにか回避する方法はありますか?

ありがとう!

4

0 に答える 0