Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 如何在ASP.NET中实现和操作多对多关系_C#_Asp.net_Sql_Ado.net - Fatal编程技术网

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

C# 如何在ASP.NET中实现和操作多对多关系,c#,asp.net,sql,ado.net,C#,Asp.net,Sql,Ado.net,假设我们有三张桌子 课程表 ------------------ ID | CourseName ------------------ 1 | C++ 2 | Java ------------------ 教师桌 ----------------------- ID | TeacherName ----------------------- 1 | Professor 1 2 | Professor 2 -----------------------

假设我们有三张桌子

课程表

------------------
 ID | CourseName
------------------
 1  |  C++
 2  |  Java
------------------
教师桌

-----------------------
 ID |   TeacherName
-----------------------
 1  |   Professor 1
 2  |   Professor 2  
-----------------------
----------------------------
 ID | CourseID | TeacherID 
----------------------------
 1  |   1      |     1   
 2  |   1      |     2    
 3  |   2      |     1   
 4  |   2      |     2     
----------------------------
课程教学表

-----------------------
 ID |   TeacherName
-----------------------
 1  |   Professor 1
 2  |   Professor 2  
-----------------------
----------------------------
 ID | CourseID | TeacherID 
----------------------------
 1  |   1      |     1   
 2  |   1      |     2    
 3  |   2      |     1   
 4  |   2      |     2     
----------------------------
这就是AFAK要做的事情,但是如何选择、插入、更新、删除这种格式的记录

我的意思是,我会使用一个简单的“插入…值(…,…)”或一个简单的“选择*自…”

但是现在为了检索相同的单一信息,我必须使用一些查询,其中以某种方式包含了这3个表(提示:我已经使用了连接,但仍然是如何使用的!!)

对于我的案例,select和insert SQL语句将非常有用

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

我不确定你的问题是什么

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

要添加课程:
在课程值中插入“我的新课程”
要添加教师:
在教师值中插入“我的新教师”

Tu向现有教师添加现有课程: 在最坏的情况下,这意味着你只知道老师和课程的名字

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是什么,因为当您获得包含ID的列表时,您肯定已经这样做了:

SELECT ID, NAME FROM Teacher
SELECT ID, NAME FROM Course.
如果我写的不是:

它和其他表格一样简单

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

2-但对于CourseTacher表(连接表),当您在重复表中实际具有可用的腐蚀性TearcherId和CourseId时,必须在此表中插入

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


当您想要更新连接表时,请使用Id列升级DAE

okie:但您的问题是什么?你能详细说明一下吗?你想更新CourseTacher表吗?如果它工作正常,那么为什么要更改它?@Saurabh-我实现了这个结构,因为我首先在一篇论文上做了一个设计,我发现我需要两个表(课程和教师),然后有一个多对多的关系,所以我研究发现我必须创建第三个表作为参考,但如果我想增加一门新课程或一位新老师,我不知道应该更新哪些表格!GvS-我没有改变任何东西,我的要求在一开始很简单,然后变得复杂,在第一次它只是简单的选择,更新,删除查询从一个表…然后它变得更复杂,包括检索和更新多个表,并有这些表之间的关系!。。。我的问题是如何在代码中使用我的多对多关系(更新或选择它)一个更简单的问题…我想插入一个新的课程名称,我需要插入到课程表和CourseTacher表中,对吗?那么如何写这个复杂的插入语句呢?这是你的第一个正确答案=)祝贺你,非常感谢,虽然没有那么难,但一切都很顺利。顺便说一句,好的,我确定我用ID而不是名字来处理我的数据库(谢谢你的建议)…现在,如果你能用一个select语句来选择任何课程和所有相关的老师?那会让生活更轻松!谢谢:)我会这样做:选择Course.ID作为CourseID,Course.NAME作为CourseName,Teacher.ID作为TeacherId,Teacher.NAME AS TeacherName FROM Course LEFT OUTER JOIN CourseTeacher ON Course.ID=CourseTeacher.IDCourse internal JOIN Teacher ON CourseTeacher.IDTeacher=Teacher.ID它将为您提供所有课程以及与课程相关的所有教师。不太确定内部连接,但如果它不起作用,用左外部连接替换它,它就会起作用。我会尝试一下…+1谢谢你的努力,欢迎使用stackoverflow=)谢谢Saurabh,我只需要一些示例代码-由Lagrandmile提供-无论如何谢谢你的时间=)