您需要通过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