2

作業中のプロジェクトでは、次のようなエンティティを作成しました。

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; }
}

ヘルプ?

4

0 に答える 0