2016-07-06 46 views
1

我打電話給dataTable.Load(sqlDataReader),其中2列自動在dataTable中設置爲ReadOnly。其餘列是可編輯的。我知道我可以編輯這個屬性,但我想知道它是如何確定要設置爲ReadOnlySqlDataReader在填充DataTable時如何確定是否將列設置爲ReadOnly?

其中一列是表的主鍵,另一列是BitBit列在SQL Server中有一個默認約束,但就是這樣。我正在使用的查詢將該列轉換爲INT。我想知道是否有一種方法可以編輯我的SQL查詢以使列只讀。

回答

0

你回答自己的問題,通過指定列的詳細信息。

我的假設是DataTable是以能夠更新,插入,刪除行/列等方式創建的。因此,由DataTable以外的資源處理或計算的任何內容都可能被讀取只要。

因此,主鍵列可能是一個IDENTITY列,意味着數據庫分配鍵,這意味着您不想添加自己的值!因此被標記爲只讀。

下一個可能不是因爲列上有默認值。因爲從技術上講,您不包括位列,但是包含基於位列的計算列。所以你包含的列實際上並不存在於底層表中,因此.net將無法更改列中的數據.....

+0

是的,我確實可以使它PK只讀,但我不希望轉換值自動只讀。我將varchars轉換爲varchars,並將它們視爲只讀,所以我想就是這樣。你不會碰巧知道一種方法來防止這種情況發生嗎? – user1427105

+0

我想問題是你爲什麼要轉換?那麼爲了不被只讀,你如何將你的轉換映射到更新/插入基礎表?第二個問題是爲什麼他們被標記爲只讀,您將不得不實現自定義業務邏輯和更新/插入命令。 – Matt

+0

我正在轉換它,因爲該位使它成爲DataGrid中的複選框,而這不是我正在尋找的。它最終沒有與我的更新/插入在往返旅行。我用我的方法走了一條不同的路線,讓我有更多的控制權。 – user1427105

相關問題