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 の「いいね」システムに少し似ています。クエリにラムダを使用していますが、次のことができます。
var query = db.Comments.Select(c => new {
c.Id,
c.Users.UserName,
c.Text
});
CommentAgree への結合を作成するにはどうすればよいComment.Id = CommentAgree.CommentId
ですか? Lambda で結合を記述できますが、誰もコメントに同意しない可能性があるため、左結合にする必要がありますが、それでも表示したいのです。
私はそれを正しい方法で行いたいので、外部キー、ラムダ結合、ナビゲーション プロパティなどで行うかどうかの提案を受け付けています。
これは可能ですか?
ありがとう