在asp.net中向web api添加第二个表

时间:2015-11-27 06:49:08

标签: c# asp.net sql-server asp.net-web-api2

我在AP.Net 2013上使用Entity Framework创建了一个简单的web api项目。它执行基本的CRUD。该项目连接到SQL Server数据库,其中包含2个表 - 学生和主题。这两个表与Roll编号相关联,滚动编号是学生中的PK和主题中的FK。

当我只访问学生时,该项目工作正常。当我添加代码来处理主题时,它给了我NotSupportedException

我在Fiddler中运行这个应用程序。

我的代码如下:

private StudentDBEntities db = new StudentDBEntities();

// GET: api/Student
public IList<SubjectDetailsDto> GetStudents()
{
    return db.Students.Select(s => new SubjectDetailsDto
    {
        Roll_Number = s.Roll_Number,
        FirstName = s.FirstName,
        LastName = s.LastName,
        Class = s.Class,
        Gender = s.Gender,
        subjects = s.subjects.ToList()
    }).ToList();
}

有谁能告诉我为什么会发生异常?

编辑: SubjectDetailsDto.cs

public class SubjectDetailsDto
{
    public int Roll_Number { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Class { get; set; }
    public string Gender { get; set; }
    public List<Subject> subjects { get; set; }
}

我添加了异常的快照: enter image description here

修改

Student.cs

    public partial class Student
    {
      public int Roll_Number { get; set; }
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public int Class { get; set; }
      public string Gender { get; set; }

      public ICollection<Subject> subjects { get; set; }
   }

Subject.cs

public partial class Subject
{
    public int Roll_Number { get; set; }
    public int English { get; set; }
    public int Mathematics { get; set; }
    public int Science { get; set; }
    public Nullable<int> Total { get; set; }

    //navigation property
    public Student student { get; set; }
}

1 个答案:

答案 0 :(得分:0)

问题的根源在于实体框架不知道如何将stdin转换为将加载数据的SQL代码。 罪魁祸首是这一行:

stdin

为了避免这种情况,您可以加入表格或在两个单独的请求中加载数据:

Enumerable.ToList()