我有一個名爲Post
其中有一個名爲key
一欄表:實體框架區分大小寫查詢
Id | Key | Title
--------------------
1 | WM | First
--------------------
2 | wm | Second
正如你可以看到Post
的第一key
值WM
(大寫)和第二key
值是wm
(小寫)。
當我執行與下面的代碼查詢:
var post = await _posts.Where(o => o.Key == key).Select(o => new
{
id = o.Id,
title = o.Title
}).SingleOrDefaultAsync();
我通過key
一個值(WM和WM)卻得到一個結果。第二個(wm)。
我已經搜索瞭解決方案,發現這個question 和這個answer。當我試圖使用答案並執行[CaseSensitive]
數據註釋當我搜索wm
我回來的第一篇文章,當我搜索WM
我得到null
。 我該如何解決這個問題,並獲得一個關鍵的充足的職位?
更新: 生成的SQL查詢:
SELECT [Limit1].[C1] AS [C1],
[Limit1].[Id] AS [Id],
[Limit1].[Title] AS [Title]
FROM (SELECT TOP (2) [Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title],
1 AS [C1]
FROM [dbo].[Posts] AS [Extent1]
WHERE ([Extent1].[Key] = 'wm' /* @p__linq__0 */)
OR (([Extent1].[Key] IS NULL)
AND ('wm' /* @p__linq__0 */ IS NULL))) AS [Limit1]
你檢查,以確保您的數據庫列是設置與正確的排序規則?就個人而言,我會堅持做'.Where(o => o.Key == key).AsEnumerable()。where(o => o.Key == key)'。 – juharr
檢查你的數據庫'Key'列的類型。 –
@ m.rogalski字符串 –