Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无实体框架的MVC3多对多_C#_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# 无实体框架的MVC3多对多

C# 无实体框架的MVC3多对多,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我正在创建一个MVC3示例项目,而不是实体框架。我创建了一个API,基本上是一个dll,其中包含师范学校和资格认证类以及DBOperation类,用于管理CRUD操作 教师与资格具有多对多关系一名特定教师可以拥有多个教育资格 我成功地完成了一对多教师资格认证的代码,并成功地创建了控制器和视图 但是当涉及到多对多的时候,我被卡住了 这方面需要帮助。多谢各位 public class School { public int SchoolID { get; set; } public

我正在创建一个MVC3示例项目,而不是实体框架。我创建了一个API,基本上是一个dll,其中包含师范学校和资格认证类以及DBOperation类,用于管理CRUD操作

教师与资格具有多对多关系一名特定教师可以拥有多个教育资格

我成功地完成了一对多教师资格认证的代码,并成功地创建了控制器和视图

但是当涉及到多对多的时候,我被卡住了

这方面需要帮助。多谢各位

public class School
{
    public int SchoolID { get; set; }
    public string Name { get; set; }
    public string Telephone { get; set; }
    public string Address { get; set; }
}


public class Teacher
{
    public int TeacherID { get; set; }
    public string Name { get; set; }
    public string NIC { get; set; }
    public string Address { get; set; }
    public string Telephone { get; set; }
    public int School { get; set; }
    //public List<Qualification> Qualification { get; set; } if teacher got many Qualifications
    public int Qualification { get; set; }
}



public class Qualification
{
    public int QualificationID { get; set; }

    public string Type { get; set; }

}



public class DBOperations
{
    public List<Teacher> GetAllTeachers()
    {
        List<Teacher> t = new List<Teacher>();
        string connectionString = Connection.ConnectionString;
        SqlConnection conn = new SqlConnection(connectionString);
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = "SELECT * FROM Teachers";
        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read()) 
        {
            Teacher teacher = new Teacher();
            teacher.TeacherID = dr.GetInt32(0);
            teacher.Name = dr.GetString(1);
            teacher.NIC = dr.GetString(3);
            teacher.Address = dr.GetString(4);
            teacher.Telephone = dr.GetString(4);
            teacher.School = dr.GetInt32(5);
            teacher.Qualification = dr.GetInt32(6);
            t.Add(teacher);


        }
        return t;

    }

    public void AddNewTeacher(Teacher teacher)
    {
        string Name = teacher.Name;
        string NIC = teacher.NIC;
        string Address = teacher.Address;
        string Telephone = teacher.Telephone;
        int School = teacher.School;
        int Qualification = teacher.Qualification;

        string connectionString = Connection.ConnectionString;
        SqlConnection conn = new SqlConnection(connectionString);
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = "INSERT INTO Teachers VALUES('" + Name + "','" + NIC + "','" + Address + "','" + Telephone + "','" + School + "','" + Qualification + "')";
        cmd.ExecuteNonQuery();
        conn.Close();
    }

}任何多对多关系都需要一个中间表。大概是这样的:

public class TeachersQualifications
{
    public int QualificationId { get; set; }
    public int TeacherId { get; set; }
}
这将是模型表示。如果您愿意,可以将ID与模型交换。您还需要一个类似于此模型的数据库表

当你添加你的老师时,你还需要在这个新的表格中插入每个教师的资格证书。每个资格证书一行,包括教师ID和特定资格ID

当您要检索教师时,您还需要通过TeacherId查询这个中间表,以获得给定教师拥有的资格ID列表。此时,您可以查询资格表以获取教师的实际资格。如果需要,还可以使用联接在单个查询中执行此操作

希望这能有所帮助