2011-02-15 46 views
0

在此之前,我想說明我已經完成了大量搜索,而不僅僅是在這裏,也在谷歌上。但答案從來沒有讓我走向正確的方向,或者我只是不理解它。ASP.NET MVC 2 LINQ到SQL多對多關係

我被困在下面的問題:

我有三個表:

項目: PK ID(INT)
名(爲nvarchar 50)


ProjectImages: FK ProjectId(int)
FK ImageId(int)


圖片: PK ID(INT),
路徑(爲nvarchar(MAX))


我使用ASP.NET MVC 2.0設計我自己的投資組合,我使用LINQ到SQL獲取/操作表格數據。

我真的很新,但我對C#有一個體面的理解,也許我缺乏知識是什麼讓我在這裏。

無論如何,現在的問題是,我寫的CMS需要能夠將多個圖像附加到一個或多個項目,並且每個項目可以包含多個圖像。

項目L:M個圖像

我已經不行了,使用查詢檢索與其對應的圖像的項目,並嘗試多東西都在這裏,並在谷歌找到。

我正在考慮內部類,但我不知道從哪裏開始。

我是否需要創建一個模擬交叉表的內部類?也許是一個完全新的繼承等我很笨。特別是一整天都會讓我大腦一片混亂。

我希望有人可以給我一個答案,而不必使用plinqo或NHibernate,因爲這會導致我從頭開始,我已經寫了很多。

回答

0

看一看這裏:

的最佳方式,但也許有點難以實施簡單的項目:

http://blogs.msdn.com/b/mitsu/archive/2008/03/19/how-to-implement-a-many-to-many-relationship-using-linq-to-sql-part-ii-add-remove-support.aspx

加載簡單的解決方案,不幸的是只提供只讀訪問。也許這適合您的方案,因此是最好的辦法:

http://www.iaingalloway.com/2015/06/many-to-many-relationships-in-linq-to-sql.html

+0

謝謝Bazz,我看了一眼,也許試圖實現它之前,生病了仔細閱讀了幾次,確認發生了什麼等不適嘗試實現它時,我有時間。實習期間問我很多時間:P – 2011-02-17 06:57:00

+0

@ user617941我添加了另一個鏈接,它提供了一個更簡單的解決方案,但是具有隻讀限制。也許這對你的情況已經足夠了。 – Bazzz 2011-02-17 08:51:02

0

所有這一切是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語句的最後部分的奇特的方式,但所有的這些應該工作。