我试图找出如何在这两个类上定义代码优先导航属性以执行与此查询类似的操作:
SELECT USERID, FIRSTNAME, LASTNAME, COURSEID, NAME
FROM User
LEFT OUTER JOIN Course ON User.USERID = Course.USERID
WHERE COURSEID = 1
因此,我正在尝试查找用户列表以及他们是否参加过某门课程。
public class User
{
public int UserId {get;set; }
public string FirstName {get;set;}
public string LastName {get;set;}
public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
public int CourseId { get;set; }
public int UserId { get;set; }
public string Name { get;set; }
public virtual User User {get;set;}
}
如果我要编写一个查询来实现这一点
var u = Users.Where(x => x.Courses.Any(x => x.CourseId = 1));
这做了一个子查询,这不是我想要的(因为没有参加课程的人不会显示)。
如何定义导航属性?
HasMany(t => t.Courses).WithOptional(t => t.User).HasForeignKey(t => t.UserId);