我正在编写一个返回DataTable对象的函数。我正在使用DataTable.Load( DataReader)
来填充DataTable。但是,据我所知,虽然底层的DataReader是ReadOnly,但只有Forward-only;一旦它被加载到DataTable中;其他程序员仍然可以通过DataTable.Rows(x).Column(y).ReadOnly = False
更新数据,然后设置值。
有没有确保我的函数返回的DataTable是ReadOnly? 在旧的ADODB时代,我使用ADODB.LockTypeEnum标记返回的记录集是只读的。
通过ReadOnly,我的意思是我的函数调用者(获取返回的DataTable)无法更改Rows数据和/或根本不更新它(即readonly)。
答案 0 :(得分:1)
有没有确保我的函数返回的DataTable 只读?
不,通常没有这样的方法或方法使其成为只读。与为此目的具有属性AllowEdit
的DataView
不同(因此您可以返回DataView)。
我认为避免更改桌面的唯一方法是:尝试处理RowChanged
事件,然后再调用RejectChanges
。
答案 1 :(得分:1)
防止调用者破坏内部DataTable(或DataSet)的另一种方法是返回副本。 DataSet和DataTable类都有一个Copy()方法,它复制原始结构和数据。
显然,对于包含相对少量数据的DataTables,这将更好。