3
我必須寫兩個表之間的SQL Server的linq,相關的字段是在不同的類型。一個是字符串(nvarchar),另一個是int。LINQ to實體sqlFunction.string轉換返回varchar而不是nvarchar
這裏是我的LINQ:
from je in a
join vP in b
on je.BaseRef equals SqlFunctions.StringConvert((decimal) vP.DocEntry)
SQL中的LINQ的結果是:
SELECT
[Extent1].[Account] AS [Account]
FROM [dbo].[a] AS [Extent1]
JOIN [dbo].[b] AS [Extent2] ON ([Extent1].[BaseRef] = (STR(CAST([Extent2].[DocEntry] AS float)))) OR (([Extent1].[BaseRef] IS NULL) AND (STR(CAST([Extent2].[DocEntry] AS float)) IS NULL))
該查詢返回NULL,因爲SQL無法比擬的varchar和nvarchar。 linq to entity translate sqlfunction.stringFormat
to str('')
而不是convert(nvarchar,'')
。 我該如何轉換爲nvarchar?
您好,感謝您的回覆。我試過了,但它返回了varchar。 –
你確定嗎?我用'SQL_VARIANT_PROPERTY(STR(CAST(CAST(xxx AS float))+ N'','BaseType')'檢查了一個類似的查詢,它是'nvarchar'。但是你確定'char'和' nvarchar'是問題嗎?他們應該比較一致。 –
請看我編輯的答案。 –