J'ai une 1 à Plusieurs relation entre tblBusiness
et tblPhone
. Pour un BusinessID
spécifique, j'essaie de renvoyer une seule chaîne d'informations à lier à une zone de texte. Ci-dessous est ma dernière tentative avec le SQL généré à partir de ce même LINQ. Peu importe ce que j'ai essayé il renvoie NULL
à moins qu'il y ait une valeur pour les 3 champs.LINQ 2 SQL Retour multiple comme chaîne unique
Qu'est-ce que je fais mal? Merci!
Première LINQ:
using (var context = ConnectDataContext.Create())
{
context.Log = Console.Out;
var business = from businesse in context.tblBusinesses
where businesse.BusinessID == businessID
select businesse.BusinessName
+ businesse.ContactName
+ businesse.tblPhones.Select(p=>p.PhoneNumber)
.FirstOrDefault()
?? string.Empty;
return business.Single();
}
Maintenant, le SQL:
SELECT [t2].[value]
FROM (
SELECT COALESCE(([t0].[BusinessName] + [t0].[ContactName]) + ((
SELECT TOP (1) [t1].[PhoneNumber]
FROM [dbo].[tblPhone] AS [t1]
WHERE [t1].[BusinessID] = [t0].[BusinessID]
)),@p0) AS [value], [t0].[BusinessID]
FROM [dbo].[tblBusiness] AS [t0]
) AS [t2]
WHERE [t2].[BusinessID] = @p1
-- @p0: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]
-- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [118]