LINQ to SQL Basic问题 - 表关系

Zom*_*eep 5 c# asp.net-mvc relationship linq-to-sql

我正在使用ASP.NET MVC中的图像库,并试图同时了解LINQ to SQL.我有3个表来保存图像库数据,通过链接表有很多关系.这些是 :

图库
(ID,名称,描述)

图像
(Id,标题,描述,FileName)

GalleryImage
(GalleryId,ImageId)

GalleryImage具有与其他两个表设置的FK关系.

我希望能够加载我的画廊,并显示与每个画廊相关联的图像,并且能够显示单个图像并列出与其关联的画廊.由于我是Linq to SQL的新手,我不知道该怎么做.有人可以指导我吗?

Amy*_*y B 2

步骤1:创建表之间的关联。当以下情况发生时,您就会知道这是正确完成的

  • Gallery 类有属性 GalleryImages
  • GalleryImage 类具有属性 Gallery 和 Image(注意,单数)
  • Image 类具有属性 GalleryImages。

http://msdn.microsoft.com/en-us/library/bb629295.aspx

第 2 步:获取画廊列表:

using (CustomDataContext myDC = new CustomDataContext)
{
  List<Gallery> result = myDC.Galleries.ToList();
}
Run Code Online (Sandbox Code Playgroud)

第 3 步:然后用户单击图库并且您想要它的图像:

using (CustomDataContext myDC = new CustomDataContext)
{
  List<Image> result = myDC.Galleries
    .Where(g => g.Id = selectedGallery.Id);
    .SelectMany(g => g.GalleryImages)
    .Select(gi => gi.Image)
    .ToList()
}
Run Code Online (Sandbox Code Playgroud)

第 4 步:然后用户单击图像,您想要它的图库:

using (CustomDataContext myDC = new CustomDataContext)
{
  List<Gallery> result = myDC.Images
    .Where(i => i.Id = selectedImage.Id);
    .SelectMany(i => i.GalleryImages)
    .Select(gi => gi.Galleries)
    .ToList()
}
Run Code Online (Sandbox Code Playgroud)

如果您只想加载整个数据库,请执行以下操作:

using (CustomDataContext myDC = new CustomDataContext)
{
  DataLoadOptions dlo = new DataLoadOptions();
  dlo.LoadWith<Gallery>(g => g.GalleryImages);
  dlo.LoadWith<GalleryImage>(gi => gi.Image);
  myDC.LoadOptions = dlo;

  List<Gallery> result = myDC.Galleries.ToList();
}
Run Code Online (Sandbox Code Playgroud)

完成此操作后,整个对象图将被加载并连接以供您使用。