1
我正在從API加載數據,其中某些字段的值爲NULL
,這是預期值。在將數據(對象)加載到列表中之後,我遍歷列表並使用SQLProvider將每個對象存儲到數據庫中。F#SQLProvider - 將NULL值分配給字段
for x in myList do
let item = db.Dbo.Item.Create()
item.Name <- x.Name
item.Description <- x.Description // Description might be NULL
db.SubmitUpdates()
但是,這會失敗,錯誤說並不是所有查詢參數值都提供。
作爲一種解決方法,我現在在下面這樣做,但是它在具有大量列的表上變得非常煩人。
if x.Description |> isNull |> not then
item.Description <- x.Description
有沒有辦法避免這種空檢查?
我認爲這裏的管路有點過度,如果不是(isNull xx),那麼(用xx做的事情)在眼睛上更容易。然而,你可以嘗試的一些方法是1.過濾myList,使其沒有null x,2.如果你使用SQLprovider,你可以嘗試打開使用Optionals選項,所以你會處理一些/無,然後你可以List.choose例如篩選和映射一些值。 – s952163
@ s952163過濾出來並不是真的可以接受。我正在處理數十列,其中大多數可以是空的。某些列中的值不存在是有效的場景,我應該能夠將源字段中的數據簡單地從任何檢查中獲取到目標DB列中。 – Anil
也許在另一個問題中提到的'useOpTypes = true'參數可能對您有所幫助。我將大量數據加載到可空列中,如何對待它,取決於它來自哪裏,如果數據實際爲空,則可以使用'.GetValueOrDefault()',因此'x.Description.GetValueOrDefault()'on它也有'Uncheked.defaultof <_>'。理想情況下,它將在DTO中處理。 – s952163