C# 无实体框架的MVC3多对多
我正在创建一个MVC3示例项目,而不是实体框架。我创建了一个API,基本上是一个dll,其中包含师范学校和资格认证类以及DBOperation类,用于管理CRUD操作 教师与资格具有多对多关系一名特定教师可以拥有多个教育资格 我成功地完成了一对多教师资格认证的代码,并成功地创建了控制器和视图 但是当涉及到多对多的时候,我被卡住了 这方面需要帮助。多谢各位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
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列表。此时,您可以查询资格表以获取教师的实际资格。如果需要,还可以使用联接在单个查询中执行此操作
希望这能有所帮助