作業中のプロジェクトでは、次のようなエンティティを作成しました。
public class ObjectA
{
public Guid ObjectAGUID { get; set; } // key
public string Name { get; set; }
public int Number { get; set; }
}
public class ObjectB
{
public Guid ObjectBGUID { get; set; } //key
public string Name { get; set; }
public int Number { get; set; }
}
public class Note
{
public Guid NoteGUID { get; set; } // key
public Guid AssociationGUID { get; set; }
public string Text { get; set; }
public string NoteType { get; set; }
}
ObjectA と ObjectB の両方が Note と 1 対多の関係を持っています。ここで、Note.AssociatedGUID は A と B のそれぞれのエンティティ キーに対する依存プロパティです。つまり、A と B は、いずれかに関連付けられた任意の数の Note エンティティを持つことができます。
私の問題:
Note.AssociatedGUID = ObjectA.ObjectAGUID で新しい ObjectA と新しい Note を作成すると、DBContext.SaveChanges() で次のエラーが発生します。
Entities in 'Entities.Notes' participate in the 'ObjectBNote' relationship. 0 related 'ObjectB' were found. 1 'ObjectB' is expected.
黙想
ObjectA と ObjectB の両方に Notes が必要な場合、これを行うには、Note A と NoteB などの個別の Note エンティティを作成する必要がありますか? もしそうなら、これは冗長に思えます。
または、親エンティティごとに Note に個別の null 許容外部キーが必要ですか? より扱いやすい一方で、これは少しやり過ぎのようにも思えます。
public class Note
{
public System.Guid NoteGUID { get; set; }
public System.Guid? ObjectAGUID { get; set; }
public System.Guid? ObjectBGUID { get; set; }
public string Text { get; set; }
public string NoteType { get; set; }
}
ヘルプ?