[英]ASP.NET MVC 2 linq to sql many to many relationship
在开始之前,我想指出我已经在Google上进行了很多搜索,不仅是在这里。 但是答案从来没有使我朝着正确的方向前进,否则我只是听不懂。
我陷入以下问题:
我有三个表:
项目:PK id(int)
名称(nvarchar 50)
ProjectImages:FK ProjectId(int)
FK ImageId(int)
图片:PK id(int),
路径(nvarchar(MAX))
我正在使用ASP.NET MVC 2.0设计自己的产品组合,并使用LinQ to SQL来获取/操作表数据。
我是新手,但是我对C#有一个不错的了解,也许我的知识不足就是让我到这里来的原因。
无论如何,现在的问题是我正在编写的CMS必须能够将多个图像附加到一个或多个项目,并且每个项目可以包含多个图像。
项目M:M图片
我已经无法使用查询检索带有相应图像的项目,并且尝试过在这里和在Google上找到的多项操作。
我当时在考虑内部类,但是我不确定从哪里开始。
我是否需要制作一个对相交表建模的内部类? 也许是一个全新的继承而来的东西。我相当无知。 特别是整天都在动脑子之后。
我希望有人可以为我提供答案,而不必使用plinqo或NHibernate,因为这会使我重新开始,而且我已经写了很多东西。
在这里看看:
最佳方法,但对于简单项目可能很难实施:
加载更简单的解决方案,不幸的是,该解决方案仅提供只读访问权限。 也许这适合您的情况,因此是最佳方法:
http://www.iaingalloway.com/2015/06/many-to-many-relationships-in-linq-to-sql.html
所有这些都是与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语句完成最后一部分的理想方法,但是所有这些都应该有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.