ASP.NET linq选择多个连接

Kas*_*røm 5 asp.net entity-framework-4

我首先从EF代码获得这个数据库,现在我很难获得我的数据.

我有以下实体:

程序:是一个包含锻炼的锻炼计划.

锻炼:是一个包含集合列表的日常规.

Set :是一个练习,在y加载时重复x次.

运动:是一个包含地区的健身运动.

地区 :是人体上的一个区域,包含肌肉.

肌肉 :是人体的肌肉.

模型示例

这是3个模型示例

    public class Workout
{
    [Key]
    public int WorkoutId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual ICollection<Set> Sets { get; set; }
}
 public class Set
{
    [Key]
    public int SetId { get; set; }
    //Foreign key for Exercise
    public int ExerciseId { get; set; }
    [ForeignKey("ExerciseId")]
    public Exercise Exercise { get; set; }
    public decimal Load { get; set; }
    public decimal Order { get; set; }
}

    public class Exercise
{
    [Key]
    public int ExerciseId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    //Foreign key for Region
    public int RegionId { get; set; }
    public Region Region { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和脚手架控制器

// GET: api/Workouts
    public IQueryable<Workout> GetWorkouts()
    {          
        return db.Workouts;
    }
Run Code Online (Sandbox Code Playgroud)

所以这只给了我一个带有iCollection集的Workout对象为null.

// GET: api/Workouts
    public IQueryable<Workout> GetWorkouts()
    {          
        return db.Workouts.Include(w => w.Sets);
    }
Run Code Online (Sandbox Code Playgroud)

通过包含集我可以得到相应的集.

但是如果我想得到一个锻炼,包括集合,那些集合将包括练习,那些练习将包括最终有肌肉列表的区域?

如果我想从id锻炼,如下所示:

        [ResponseType(typeof(Workout))]
    public IHttpActionResult GetWorkout(int id)
    {
        Workout workout = db.Workouts.Find(id);
        if (workout == null)
        {
            return NotFound();
        }

        return Ok(workout);
    }
Run Code Online (Sandbox Code Playgroud)

那我怎么会包括套装

编辑 从Visual Studio模板/帮助页面,我可以看到以下内容:

GET api/Workouts/{id}
Run Code Online (Sandbox Code Playgroud)

应该提供医疗:

{
   "workoutId": 1,
   "name": "sample string 2",
   "description": "sample string 3",
   "sets": [
   {
     "setId": 1,
     "exercise": {
     "exerciseId": 1,
     "name": "sample string 2",
     "description": "sample string 3",
     "regionId": 4,
     "region": {
     "regionId": 1,
     "regionName": "sample string 2",
     "muscles": [
        {
          "muscleId": 1,
          "latinName": "sample string 2",
          "dkName": "sample string 3",
          "enName": "sample string 4",
          "description": "sample string 5"
        },
        {
          "muscleId": 1,
          "latinName": "sample string 2",
          "dkName": "sample string 3",
          "enName": "sample string 4",
          "description": "sample string 5"
        }
      ]
    }
  },
Run Code Online (Sandbox Code Playgroud)

但它只是不会发生,我打开任何让我返回JSON完整程序的东西.skype,teamwievr,堆栈,另一种解决方案,anyhting.

Kas*_*røm 3

最后我明白了:

 public class Exercise
 {
     [Key]
     public int ExerciseId { get; set; }
     public string Name { get; set; }
     public string Description { get; set; }
     //Foreign key for Region
     //public int RegionId { get; set; }
     public virtual Region Region { get; set; }    //had to be virtual -.-
 }
Run Code Online (Sandbox Code Playgroud)