C# ASP.NET MVC 2 linq到sql多对多关系

C# ASP.NET MVC 2 linq到sql多对多关系,c#,asp.net-mvc-2,many-to-many,C#,Asp.net Mvc 2,Many To Many,在此之前,我想声明我做了很多搜索,不仅仅是在这里,也在谷歌上。但答案从来没有让我走上正确的方向,或者我只是不理解它 我被困在以下问题上: 我有三张桌子: 项目: PK id(int) 姓名(nvarchar 50) 投影图像: FK ProjectId(int) FK图像ID(整数) 图像: 主键id(int), 路径(nvarchar(最大)) 我正在使用ASP.NETMVC2.0设计自己的公文包,并使用LINQtoSQL获取/操作表数据 我是个新手,但我对C#有相当的了解,也许是我缺乏

在此之前,我想声明我做了很多搜索,不仅仅是在这里,也在谷歌上。但答案从来没有让我走上正确的方向,或者我只是不理解它

我被困在以下问题上:

我有三张桌子:

项目: PK id(int)
姓名(nvarchar 50)


投影图像: FK ProjectId(int)
FK图像ID(整数)


图像: 主键id(int),
路径(nvarchar(最大))


我正在使用ASP.NETMVC2.0设计自己的公文包,并使用LINQtoSQL获取/操作表数据

我是个新手,但我对C#有相当的了解,也许是我缺乏知识让我来到这里

无论如何,现在的问题是,我写的CMS需要能够附加多个图像到一个或多个项目,每个项目可以包含多个图像

项目M:M图像

我已经无法使用查询检索一个项目及其对应的图像,并且尝试了在这里和谷歌上找到的多种方法

我在考虑内部类,但我不知道从哪里开始

我是否需要创建一个内部类来建模交集表?也许是一个全新的继承人,等等。我很无知。尤其是在一整天都为这事伤脑筋之后

我希望有人能给我一个答案,而不必使用plinqo或NHibernate,因为这会让我从头开始,我已经写了很多了。

看看这里:

最好的方法,但对于简单的项目可能有点难以实施:

加载更简单的解决方案,不幸的是它只提供只读访问。也许这适合您的场景,因此是最佳方法:


所有这些都与SQL相关,这里没有其他代码(不知道ASP)

要检索指定项目的所有映像路径,可以使用此SQL查询

select i.path
from Projects p
join ProjectImages pi on pi.ProjectIt = p.id
join Images i on i.id = pi.ImageId
where p.name = 'project'
要为每个解决方案插入多个图像,可以执行以下操作:

--insert the images:
insert into images (name) path ('/path/to/image')
insert into images (name) path ('/path/to/second/image')

--Get the IDs of these images:
select id from images where path in ('/path/to/image','/path/to/second/image')
--let's say this gives you ids 10 and 11

--Get the project name:
select id from projects where name = 'project'
--let's say your project id is 1

--Insert into the joining table, once for each image (change for values above)
insert into ProjectImages (ProjectId,ImageId) values (1,10)
insert into ProjectImages (ProjectId,ImageId) values (1,11)

我不确定用一条SQL语句来完成最后一部分是否有什么好方法,但所有这些都应该可以使用。

感谢您迄今为止的回答,但是在普通SQL中,这从来都不是问题,特别是linq to SQL,它不支持直接的m:m关系。通过linq插入sql的工作方式与手动查询完全不同。你调用了一个方法,事情就完成了;o使用select SQL查询,我可以通过链接解决它,但我仍然会被插入和删除卡住。谢谢你花时间回答。我非常感谢Hanks Bazz,我看了一下,也许在尝试实施它之前,我必须仔细阅读几遍,确定发生了什么等。我会在有时间的时候尝试实施它。实习占用了我很多时间:P@user617941我添加了另一个链接,它提供了更简单的解决方案,但有只读限制。也许这对于您的场景来说已经足够了。我已经设法解决了^^我现在可以使用M:M结构更新CMS中的删除和插入:)谢谢。很好,我很高兴您成功地完成了。:)仅供将来参考,你介意告诉我你采取了哪种方法吗?我想是mitsu的那个?