【发布时间】:2013-02-21 14:55:55
【问题描述】:
假设我有 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; }
}
用户发布 cmets 并且其他用户可以“同意”该评论,有点像 Facebook 的“赞”系统。我正在使用 lambda 进行查询,我可以这样做:
var query = db.Comments.Select(c => new {
c.Id,
c.Users.UserName,
c.Text
});
如何在 Comment.Id = CommentAgree.CommentId 上创建 CommentAgree 连接?我可以在 Lambda 中编写联接,但我需要它是左联接,因为没有人可能同意该评论,但我仍然希望它显示。
我想以正确的方式来做,所以我愿意接受建议是通过外键、lambda 连接、导航属性...还是其他方式来做?
这可能吗?
谢谢
【问题讨论】:
标签: c# entity-framework asp.net-mvc-4 lambda foreign-keys