2016-07-06 23 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