使用強類型數據集-》未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
2009-08-24 10:15
162 查看
强类型DataSet优缺点
优点:
1) 设计时的优势,编写代码容易,能够充分利用vs.net的自动完成功能
2) 能更容易地在设计时绑定控件
3) 运行时可以提高应用程序的性能
这主要是因为在访问某条记录的某个字段时,使用DataColumn对象本身比使用列名具有更高的效率,但增加了维护的困难。强类型的DataSet替我们解决了这个问题。
缺点:不灵活。
1) 因为架构信息已经硬编码进MyCustomers.cs,如果发生改动的话,必须重新生成。
2) 比如从拥有30个字段的某个表中选择3个字段A,B,C,专门为这三个字段生成一个强类型的DataSet1是可以的,但是倘若另一个方法需要选择字段C,D,E,还需要为这三个字段专门生成一个强类型的DataSet2。倘若select的字段由使用者自行定制,字段的一个组合就了不得了。
3) 为避免上面使用多个强类型DataSet的情况,我们可以只使用一个强类型DataSet,这样每次不管我们Fill多少个字段,都填充进一个强类型DataSet。
但这又带来了新的问题:
i)空间的浪费(特别是对于多表连接的情况)。可以写代码测试一下30个string字段中只填充1,2个占用的空间相对大小(使用强类型DataSet比弱类型占用内存大数倍不止)。
ii)约束的违反。强类型在生成时已经把数据库中的约束(如非空,FK等)添加了进来,这样在只填充部分数据时可能会发生违反约束的异常。
比如col1,col2,col3,col4都要求不为空,但是我只select了col1,col2进入强类型DataSet,这样对应记录的col3,col4字段均为空,违反了非空约束,会抛出异常并提示:
未处理的“System.Data.ConstraintException”类型的异常出现在 system.data.dll 中。
其他信息: 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
优点:
1) 设计时的优势,编写代码容易,能够充分利用vs.net的自动完成功能
2) 能更容易地在设计时绑定控件
3) 运行时可以提高应用程序的性能
这主要是因为在访问某条记录的某个字段时,使用DataColumn对象本身比使用列名具有更高的效率,但增加了维护的困难。强类型的DataSet替我们解决了这个问题。
缺点:不灵活。
1) 因为架构信息已经硬编码进MyCustomers.cs,如果发生改动的话,必须重新生成。
2) 比如从拥有30个字段的某个表中选择3个字段A,B,C,专门为这三个字段生成一个强类型的DataSet1是可以的,但是倘若另一个方法需要选择字段C,D,E,还需要为这三个字段专门生成一个强类型的DataSet2。倘若select的字段由使用者自行定制,字段的一个组合就了不得了。
3) 为避免上面使用多个强类型DataSet的情况,我们可以只使用一个强类型DataSet,这样每次不管我们Fill多少个字段,都填充进一个强类型DataSet。
但这又带来了新的问题:
i)空间的浪费(特别是对于多表连接的情况)。可以写代码测试一下30个string字段中只填充1,2个占用的空间相对大小(使用强类型DataSet比弱类型占用内存大数倍不止)。
ii)约束的违反。强类型在生成时已经把数据库中的约束(如非空,FK等)添加了进来,这样在只填充部分数据时可能会发生违反约束的异常。
比如col1,col2,col3,col4都要求不为空,但是我只select了col1,col2进入强类型DataSet,这样对应记录的col3,col4字段均为空,违反了非空约束,会抛出异常并提示:
未处理的“System.Data.ConstraintException”类型的异常出现在 system.data.dll 中。
其他信息: 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
相关文章推荐
- 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- Mark:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
- VS报“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。”
- System.Data.ConstraintException: 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- 关于强类型Dataset出错提示未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
- 用数据集时,错误:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
- asp.net提示:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- “未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值”的可能解决方法
- "未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。"的解决办法
- 用数据集时,错误:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
- 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- VS中提示:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- 今天用Visual C#为客户做一个数据下载分析系统,碰到一个问题 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- 关于 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值 的解决办法
- 关于强类型Dataset出错提示未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
- 关于 未能启用约束。一行或多行中包含违反非空、唯一或外键
- 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- (原)未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值与DATEADD
- 在数据库返回过程中,发生如下错误,未能启用约束,一行或多行中包含违反非空、唯一或外键约束的值。
- 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值