3 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
Linq-to-SQL的解決方法:
var result = from entry in table where entry.something.Equals(value) select entry;
Linq-to-Entities的解決方法(哎喲?。?/p>
var result = from entry in table where (value == null ? entry.something == null : entry.something == value) select entry;
這是一個(gè)令人討厭的蟲子,幾次咬我。 如果此錯誤也影響了您,請?jiān)L問UserVoice上的錯誤報(bào)告,并讓Microsoft知道此錯誤也會影響您。
編輯: 此錯誤正在EF 4.5中修復(fù)!感謝大家提出這個(gè)錯誤!
為了向后兼容,它將選擇加入 - 您需要手動啟用設(shè)置才能entry == value
工作。還沒有關(guān)于這個(gè)設(shè)置是什么的消息。敬請關(guān)注!
編輯2: 根據(jù)EF團(tuán)隊(duì)的這篇文章,這個(gè)問題已經(jīng)在EF6中得到修復(fù)!哇噢!
我們更改了EF6的默認(rèn)行為以補(bǔ)償三值邏輯。
這意味著依賴于舊行為的現(xiàn)有代碼(null != null
但僅在與變量進(jìn)行比較時(shí))將需要更改為不依賴于該行為,或者設(shè)置UseCSharpNullComparisonBehavior
為false以使用舊的行為。

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
從Entity Framework 5.0開始,您可以使用以下代碼來解決您的問題:
public abstract class YourContext : DbContext{ public YourContext() { (this as IObjectContextAdapter).ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior = true; }}
這應(yīng)該可以解決您的問題,因?yàn)閷?shí)體Framerwork將使用'C#like'null比較。
- 3 回答
- 0 關(guān)注
- 365 瀏覽
添加回答
舉報(bào)