C# ASP.NET MVC 2 linq到sql多对多关系
在此之前,我想声明我做了很多搜索,不仅仅是在这里,也在谷歌上。但答案从来没有让我走上正确的方向,或者我只是不理解它 我被困在以下问题上: 我有三张桌子: 项目: PK id(int)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#有相当的了解,也许是我缺乏
姓名(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的那个?