これまで同様のトピックについての質問をここで行ってきましたが、その後は別のアプローチを採用しています。これは私のモデルである:C#Modelユーザー、フレンドリクエスト、エンティティフレームワークを持つフレンドコード
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole,CustomUserClaim>
{
public ApplicationUser()
{
Friends = new List<Friend>();
}
[Required]
public string Alias { get; set; }
public virtual ICollection<Friend> Friends { get; set; }
}
public class Friend
{
public virtual int Id { get; set; }
public virtual ApplicationUser RequestedBy { get; set; }
public virtual ApplicationUser RequestedTo { get; set; }
public DateTime? RequestTime { get; set; }
public FriendRequestFlag FriendRequestFlag { get; set; }
}
public enum FriendRequestFlag
{
None,
Approved,
Rejected,
Blocked,
Spam
};
私は、このアプローチで友達を追加することができますし、私は、データベースからそれらを得るとき、彼らは移入、サンプル:
public void AddFriendRequest(ApplicationUser user, ApplicationUser friendUser)
{
var friendRequest = new Friend()
{
RequestedBy = user,
RequestedTo = friendUser,
RequestTime = DateTime.Now,
FriendRequestFlag = FriendRequestFlag.None
};
user.Friends.Add(friendRequest);
}
私は上記のコードを実行すると、中に友人のテーブルをデータベースは、実行後、次のようになります。
私は友達のすべての行を取得するためにEntity Frameworkのをwan'tしまうユーザーを取得すると、ユーザはeitheありましたr RequestedBy
またはRequestedTo
。これはEFで可能ですか?たとえばFluent APIを使用していますか?また、[ApplicationUser_Id]
が必要ないようにキーをマップしたいと思います。私は、ユーザーを取得すると、ユーザはRequestedByかRequestedToのいずれかであるだった私は 友達のすべての行を取得するためにEntity Frameworkのをwan'tう