我的数据库中有以下表格:
SageAccount
托运
我想要做的是在我的Linq to Sql dbml中从Consignment
到SageAccount
有一个导航属性/关联。这样做的难点在于我们不仅需要匹配SageAccount.LegacyID => Consignments.Customer
,而且我们还需要加入SageAccount.Customer为TRUE的sage帐户。所以在Consignments结束时,它不是连接到一个字段而是一个静态值。
这在Linq to Sql中是否可行?请注意,此数据库没有(并且遗憾的是)无法在数据库中设置任何外键。
答案 0 :(得分:0)
是的,这是可能的。 linq有join
方法。你可以在你的情况下使用它:
var res = from sageAccount in _context.SageAccount
join consignments in _context.Consignments
on
new
{
LegacyID = sageAccount.LegacyID,
Customer = sageAccount.Customer
}
equals
new
{
LegacyID = consignments.ID,
Customer = true
}
select new { SageAccountID = sageAccount.ID };
请注意,您加入的匿名对象中的媒体资源名称,类型和顺序必须匹配。
您不能在联接中使用OR
和AND
- 只使用equals
一个对象与其他对象。
这将在您的SQL中产生这样的结果:
SELECT [t0].[ID] AS [SageAccountID]
FROM [dbo].[SageAccount] AS [t0]
INNER JOIN [dbo].[Consignments] AS [t1] ON (([t0].[LegacyID]) = [t1].[ID])
AND ([t0].[Customer] = 1)