通过 LINQ 访问外键

本文关键字:访问 LINQ 通过 | 更新日期: 2023-09-27 17:55:49

我在SQL Server 2008上有一个设置。我有三张桌子。一个将字符串标识符作为主键。第二个表将索引保存到属性表中。第三个只是将外键保存到两个表中 - 因此属性本身不会保存在第一个表中,而是被引用。显然,这在数据库规范化中很常见,尽管它仍然很疯狂,因为我知道,由于键是一个字符串,因此每 30 个第一个表室条目最多需要 1 个属性才能产生空间优势,更不用说时间和复杂性问题了。

如何将 LINQ to SQL 查询编写为仅返回第一个表中的值,以便它们仅包含第二个表中列表中定义的特定属性?我试图使用JoinGroupJoin,但显然SQL Server 2008不能使用元组作为返回值。

通过 LINQ 访问外键

"我尝试使用加入或 GroupJoin,但显然是SQL Server 2008 不能使用元组作为返回 值"。

您可以使用匿名类型而不是 Linq2SQL 支持的元组。

即:

from x in source group x by new {x.Field1, x.Field2}

我不太清楚你要什么。一些代码可能会有所帮助。你在寻找这样的东西吗?

var q = from i in ctx.Items
        select new 
        {
            i.ItemId,
            i.ItemTitle,
            Attributes = from map in i.AttributeMaps
                         select map.Attribute
        };

当我知道我想使用的 sql 方法时,我一直使用此页面来找出复杂的 linq 查询。

VB http://msdn.microsoft.com/en-us/vbasic/bb688085

C# http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

如果您知道如何编写 sql 查询来获取所需的数据,那么这将向您展示如何获得将其转换为 linq 语法的相同结果。