繁体   English   中英

ASP.NET MVC 2 LINQ to SQL多对多关系

[英]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://blogs.msdn.com/b/mitsu/archive/2008/03/19/how-to-implement-a-many-to-many-relationship-using-linq-to-sql-part-ii-添加删除支持.aspx

加载更简单的解决方案,不幸的是,该解决方案仅提供只读访问权限。 也许这适合您的情况,因此是最佳方法:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM