我以前在SO上提过一个关于类似主题的问题,但自此采取了不同的方法。这是我的模型:C#模型用户,朋友请求和朋友与实体框架代码第一
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);
}
当我运行上面的代码,在朋友表数据库是这样执行后:
当我得到一个用户我wan't实体框架来获得朋友的所有行是用户eithe r RequestedBy
或RequestedTo
。这可能与EF有关吗?例如与Fluent API?我还想映射密钥,以便不需要[ApplicationUser_Id]
。