比較使用LINQ和實體框架時的奇怪之處。 我想從我的數據庫中檢索一個ID,並得到這個奇怪的消息。VB.NET LINQ方法語法不允許從'Integer?'進行隱式轉換到'Integer'
我可以簡單地修復它,你可以看到,但我想明白爲什麼會這樣。
問題:
爲什麼我得到即使我請與「的HasValue」或者我用「FirstOrDefault」此錯誤消息?在我看來,它不能爲空,但我顯然錯過了一些東西。
比較使用LINQ和實體框架時的奇怪之處。 我想從我的數據庫中檢索一個ID,並得到這個奇怪的消息。VB.NET LINQ方法語法不允許從'Integer?'進行隱式轉換到'Integer'
我可以簡單地修復它,你可以看到,但我想明白爲什麼會這樣。
問題:
爲什麼我得到即使我請與「的HasValue」或者我用「FirstOrDefault」此錯誤消息?在我看來,它不能爲空,但我顯然錯過了一些東西。
添加.Value
如果你是100%肯定的Integer?
有一個值。
爲什麼我得到即使我請與「的HasValue」
實體框架只是使用你給它的對象此錯誤消息。它不能創建OPX_不可爲空的新對象。
可以在10分鐘內接受你的答案。謝謝你學到了什麼。 –
setOpxRights函數大概需要一個Integer作爲參數,而Option Strict On將不允許Integer?隱式轉換爲整數。如果你確定它總會有一個值,那麼通過cctUser.OPX_Rechte.Value
編譯器並不完美,我們可以看到OPX_Rechte會因爲where語句而有一個值,但是對於編譯器來說你是隻使用一個有Integer的對象cctUser?它需要一個Integer。
請粘貼在您的實際代碼中。屏幕截圖很難處理。 –
即使**你**檢查'HasValue','嚴格'政策並不在乎。你有沒有嘗試簡單地將它投射到Integer? 'user.setID(DirectCast(cctUser.OPX_Rechte,Integer))'。既然你知道該屬性有價值,它應該不是一個問題。 –
是的,我可以簡單地把它,但我不喜歡只是不明白爲什麼我不得不這樣做。 –