在处理与跳过扩展的多对多关系时,我对 linq to sql 感到非常沮丧。它不允许我使用连接查询。不确定 SQL Server 2005 的情况,但我目前使用的是 SQL Server 2000。
现在我考虑编写一个存储过程来获取一个与两个表匹配的表,例如 Album_Photo (Album->Album_Photo<-Photo) 和 Photo 表,并且只需要 Photos 数据,所以我将专辑的 ID 与 Album_Photo 匹配并使用该 ID以匹配照片。在存储过程中,我只是获取所有连接的数据。之后在 linq to sql 中,我创建了一个新的 Album 对象。
例如
var albums = (from r in result
where (modifier_id == r.ModifierID || user_id == r.UserID)
select new Album() {
Name = r.Name,
UserID = r.UserID,
ModifierID = r.ModifierID,
ID = r.ID,
DateCreated = r.DateCreated,
Description = r.Description,
Filename = r.Filename
}).AsQueryable();
我使用 AsQueryable 将结果作为 IQueryable 而不是 IEnumerable。后来我想对集合做点什么,它给了我这个错误:
System.InvalidOperationException:不能多次枚举查询结果。