SqlDataReader在填充DataTable时如何判断是否将列设置为ReadOnly?

How does SqlDataReader determine whether to set a column to ReadOnly when filling a DataTable?

我正在调用 dataTable.Load(sqlDataReader),dataTable 中的 2 列自动设置为 ReadOnly。其余列为 editable。我知道我可以编辑此 属性,但我想知道它如何确定要设置为 ReadOnly 的内容。

其中一列是table的主键,另一列是BitBit 列在 SQL Server 中有一个默认约束,但仅此而已。我用来调用它的查询正在将列转换为 INT。我想知道是否有一种方法可以编辑我的 SQL 查询以将列设置为只读。

您通过指定列详细信息回答了您自己的问题。

我的假设是 DataTable 是以能够更新、插入、删除 row/column 等的方式创建的。因此,由 DataTable 以外的资源处理或计算的任何内容可能是只读的。

所以主键列很可能是 IDENTITY 列,这意味着数据库分配了键,这意味着您不想添加自己的值!因此被标记为只读。

下一个可能不是,因为列上有默认值。因为从技术上讲,您不包括位列,而是包括基于位列的计算列。因此,您包含的列实际上并不存在于基础 table 中,因此 .net 将无法更改列中的数据......