假设我有 3 张桌子:
[Table("Comments")]
public class Comment {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("Users")]
public int UserId { get; set; }
public virtual Users Users { get; set; }
public string Text { get; set; }
}
[Table("Users")]
public class Users {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string UserName { get; set; }
}
[Table("CommentAgree")]
public class CommentAgree {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int CommentId { get; set; }
public int UserId { get; set; }
}
用户发表评论,其他用户可以“同意”该评论,有点像 Facebook 的“点赞”系统。我正在使用 lambda 进行查询,我可以这样做:
var query = db.Comments.Select(c => new {
c.Id,
c.Users.UserName,
c.Text
});
如何创建加入 CommentAgree on Comment.Id = CommentAgree.CommentId
?我可以在 Lambda 中编写联接,但我需要它是左联接,因为没有人可能同意该评论,但我仍然希望它显示。
我想以正确的方式做到这一点,所以我愿意接受建议,是否通过外键、lambda 连接、导航属性......或其他方式来做到这一点?
这可能吗?
谢谢