Entity Framework 根据条件检索对象
Entity Framework retrieve objects based in condition
我正在使用 Entity Framework 开发 Web Api 应用程序,其中我有这两个模型和我的 DbContext class:
public class Course
{
[Key]
public int CourseId { get; set; }
[Required]
public string CourseName{ get; set; }
public ICollection<Students> Students { get; set; }
}
public class Students
{
[Key]
public int StudentId { get; set; }
[Required]
public string StudentName{ get; set; }
[Required]
public int StudentAge{ get; set; }
}
//My CourseContext
public class CourseContext : DbContext
{
public CourseContext () : base("CourseDB") { }
public DbSet<Course> Courses { get; set; }
public DbSet<Students> Students { get; set; }
}
我正在使用上面的这些模型对 WebAPI 进行建模,我需要列出所有正在上课的学生,这意味着他们将被添加到课程 Class 中的 ICollection Students 属性 中。我试图为此开发一个解决方案,但我不知道该怎么做,因为我在模型之间没有外键 属性。
...
using (var course_db = new CourseContext ()){
/*but this return all students and repeated ones since one student
can be in more than one course*/
var students= course_db.Course.Include("Students").Select(x=> x.Students);
if (students== null){
return Json(new { success = false });
}
return Json(students, JsonRequestBehavior.AllowGet);
}
...
我试过下面的代码,但没有用。我只想检索已注册课程的学生,因为其中一些不是。有人可以帮助我吗?
您需要在模型中进一步建立关系。学生与课程的关系应该是多对多关系,您在每个关系中都缺少适当的属性,但也缺少连接 table 和适当的模型构建器(上下文)配置。
覆盖您的 dbcontext 模型创建方法以添加您的流畅配置:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Build many-to-many relationships
modelBuilder.Entity<Student>()
.HasMany<Course>(c => c.Courses)
.WithMany(s => s.Student)
.Map(pe =>
{
pe.MapLeftKey("Student_ID");
pe.MapRightKey("Course_ID");
pe.ToTable("StudentCoursesTable");
});
}
添加学生缺少的课程class:
public class Students
{
public ICollection<Courses> Courses { get; set; }
}
我正在使用 Entity Framework 开发 Web Api 应用程序,其中我有这两个模型和我的 DbContext class:
public class Course
{
[Key]
public int CourseId { get; set; }
[Required]
public string CourseName{ get; set; }
public ICollection<Students> Students { get; set; }
}
public class Students
{
[Key]
public int StudentId { get; set; }
[Required]
public string StudentName{ get; set; }
[Required]
public int StudentAge{ get; set; }
}
//My CourseContext
public class CourseContext : DbContext
{
public CourseContext () : base("CourseDB") { }
public DbSet<Course> Courses { get; set; }
public DbSet<Students> Students { get; set; }
}
我正在使用上面的这些模型对 WebAPI 进行建模,我需要列出所有正在上课的学生,这意味着他们将被添加到课程 Class 中的 ICollection Students 属性 中。我试图为此开发一个解决方案,但我不知道该怎么做,因为我在模型之间没有外键 属性。
...
using (var course_db = new CourseContext ()){
/*but this return all students and repeated ones since one student
can be in more than one course*/
var students= course_db.Course.Include("Students").Select(x=> x.Students);
if (students== null){
return Json(new { success = false });
}
return Json(students, JsonRequestBehavior.AllowGet);
}
...
我试过下面的代码,但没有用。我只想检索已注册课程的学生,因为其中一些不是。有人可以帮助我吗?
您需要在模型中进一步建立关系。学生与课程的关系应该是多对多关系,您在每个关系中都缺少适当的属性,但也缺少连接 table 和适当的模型构建器(上下文)配置。
覆盖您的 dbcontext 模型创建方法以添加您的流畅配置:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Build many-to-many relationships
modelBuilder.Entity<Student>()
.HasMany<Course>(c => c.Courses)
.WithMany(s => s.Student)
.Map(pe =>
{
pe.MapLeftKey("Student_ID");
pe.MapRightKey("Course_ID");
pe.ToTable("StudentCoursesTable");
});
}
添加学生缺少的课程class:
public class Students
{
public ICollection<Courses> Courses { get; set; }
}