您需要通過DataContext對象訪問所有這些。
查看您的dbml生成的c#文件,並查找標記有Association屬性的EntitySet集合 - Gallary和Image中應該有一個集合,在GallaryImage中應該有一個。如果dbml生成正確,你應該可以做下面的事情 -
我非常確定設計表面將命名爲Gallerys而不是圖庫的圖庫複數,所以它不是一個錯字 -
DataConext dc = new GalleryDataConext();
foreach (Gallery g in dc.Gallerys)
{
Console.Writeline("gallery id " + g.Id.ToString());
foreach(GalleryImage gi in g.GalleryImages)
{
Console.Writeline("galleryimage id " + gi.Id.ToString());
foreach(Image i in gi)
{
Console.Writeline("image id " + i.Id.ToString());
}
}
即使沒有關聯,下面應該工作 -
int GalID = 1;
GalleryDataConext dc = new GalleryDataConext()
var pics = from g in dc.Gallary
join gi in dc.GallaryImages on g.Id equals gi.GallaryId
join i in dc.Images on gi.ImageId equals i.Id
where g.Id = GalID
select i;
若要從PIC ID獲得gallaries,你會怎麼做 -
int PicID = 1;
var gals = from g in dc.Gallary
join gi in dc.GallaryImages on g.Id equals gi.GallaryId
join i in dc.Images on gi.ImageId equals i.Id
where i.Id = PicID
select g;
上面的代碼會返回IQueryable<Gallary>
,並且在枚舉時會執行sql查詢。
謝謝。我必須做一些非常基本的錯誤,但不能爲我的生活看到它是什麼。我的數據庫表定義了關係,我的dbml圖顯示了這些關係,但是我的實體不需要預期的屬性。 – ZombieSheep 2010-06-29 14:42:53
檢查涉及的屬性的類型。注意將字符串與int相關聯,或將int與int相關聯。還要確保在dbml中有主鍵。 LinqToSql無法跟蹤沒有這些主鍵的對象標識(或製作關係屬性和對象圖)。 – 2010-06-29 14:44:10
就是這樣。我的關係表沒有設置鍵 - 出於某種原因,我認爲它不需要它們,只有FK。謝謝。 :) – ZombieSheep 2010-06-29 14:53:49