如何在ASP.NET中实现和操作多对多关系

时间:2010-12-08 15:03:58

标签: c# asp.net sql ado.net

假设我们有三个表

课程 - 表格

------------------
 ID | CourseName
------------------
 1  |  C++
 2  |  Java
------------------

老师 - 表

-----------------------
 ID |   TeacherName
-----------------------
 1  |   Professor 1
 2  |   Professor 2  
-----------------------

CourseTeacher - 表

----------------------------
 ID | CourseID | TeacherID 
----------------------------
 1  |   1      |     1   
 2  |   1      |     2    
 3  |   2      |     1   
 4  |   2      |     2     
----------------------------

现在这就像AFAK一样,但如何以这种格式选择,插入,更新,删除记录!

我的意思是,我会使用简单的“INSERT INTO ... VALUES(..,..,..)”或简单的“SELECT * FROM ...”

但是现在要检索相同的单个信息我要使用一些包含3个表的查询(提示:我已经使用了连接,但仍然是如何!!)

为我的案例选择和插入SQL语句会非常有用。

我不使用任何型号和这个复杂的东西,我不知道这样的东西有什么用! 我在我的ADO.NET对象中使用SQL查询,到目前为止一切正常!

2 个答案:

答案 0 :(得分:2)

我不确定你的问题是什么......

假设您在每个表中的PK都会自动递增。

添加课程:INSERT INTO Course VALUES 'My New Course' 要添加教师:INSERT INTO Teacher VALUES 'My New Teacher'

将现有课程添加到现有教师: 在最糟糕的情况下,意味着您只知道教师和课程的名称

SELECT ID FROM Teacher WHERE NAME = 'My New Teacher' -> id1
SELECT ID FROM Course WHERE NAME = 'My New Course' -> id2
INSERT INTO CourseTeacher(IDCOURSE,IDTEACHER) VALUES (id2,id1)

事实上,在您的应用程序中,当您的用户选择要添加到教师的课程时,您应该已经知道ID是什么,因为当您获得包含它们的列表时,您当然已经这样做了:

SELECT ID, NAME FROM Teacher
SELECT ID, NAME FROM Course.

如果我写的不是: http://www.singingeels.com/Articles/Understanding_SQL_Many_to_Many_Relationships.aspx

答案 1 :(得分:1)

它就像其他表一样简单。

1 - 我假设你必须有插入,更新,选择课程和教师表的代码。所以继续使用相同的方法。

2-但是对于CourseTeacher表(连接表),当您在相应的表中实际存在相应的TearcherId和CourseId时,必须在此表中插入。

因此,当您想在CourseTeacher表中添加新记录时,首先要确保courseid和teacherid的相应值。

当您想要在联结表中更新时,请使用Id列进行更新