Code First で Entity Framework を使用しています。データベースに、ユーザー間の関係を格納するテーブルがあります。テーブル構造は次のようになります。
RequestID
UserFromID
UserToID
UserFromID
との両方UserToID
が User テーブルへの外部キーです。
私の User エンティティには、Relationships
setup という仮想プロパティがあります。このプロパティを、現在のユーザーが または のいずれかでRelationshipRequests
ある、上記の表からのすべてのコレクションにしたいと考えています。UserID
UserFromID
UserToID
これらは、コンテキスト内の私のバインディングです:
modelBuilder.Entity<UserProfile>()
.HasMany(e => e.Relationships).WithRequired(e => e.UserFrom)
.HasForeignKey(e => e.UserFromID).WillCascadeOnDelete(false);
modelBuilder.Entity<UserProfile>()
.HasMany(e => e.Relationships).WithRequired(e => e.UserTo)
.HasForeignKey(e => e.UserToID).WillCascadeOnDelete(true);
ただし、ユーザーの関係が取得されると、コレクション内の唯一の関係は、ユーザー ID がUserToID
. 私はそれらを交換しようとしましたが、その場合、コレクションにはユーザー ID がUserFromID
. 私が期待したように、2番目のバインディングが最初のバインディングを上書きするのではなく、最初のバインディングをオーバーライドしているようです。私は明らかにこれを間違っています。私の質問は、両方のキーが私が望むようにバインドされるように、このバインディングを行う別の方法はありますか、それとも別の方法で実装する必要がありますか?
ありがとう!