VS2008中的TableAdapterManager和分层更新机制

本文部分转载自:http://msdn.microsoft.com/zh-cn/library/bb384426.aspx

TableAdapterManager 是 Visual Studio 2008 中的一个新组件,它以现有数据功能(类型化数据集和 TableAdapter)为基础,并提供在相关数据表中保存数据的功能。TableAdapterManager 使用将数据表关联起来的外键关系来确定将 Insert、Update 和 Delete 从数据集发送到数据库的正确顺序,而不违反数据库中的外键约束(引用完整性)。

“外键约束”是数据库中的一致性规则,用于控制与 Insert、Update 和 Delete 相关的记录的行为。外键约束能够防止当其他表中仍然存在相关子记录时父记录被删除。

使用 TableAdapterManager 在相关数据表中保存数据的整个过程称为分层更新

保存相关数据表中修改过的数据比保存单个表中的数据要复杂。这是因为必须以特定的顺序执行每个相关表的 Insert、Update 和 Delete 命令,以避免违反数据库中定义的外键约束。例如,假设有一个订单录入应用程序,您可以使用该程序管理新的和现有的客户和订单。如果您需要删除一条现有客户记录,必须首先删除该客户的所有订单。如果要添加新的客户记录(带订单),必须首先插入新的客户记录,然后再插入该客户的订单,这是表中外键约束的要求。正如这些示例所示,您需要提取数据的特定子集,并以正确的顺序发送更新(Insert、Update 和 Delete)以维护引用完整性,避免违反数据库中的外键约束。

 

以下我总结需要注意的一个问题:

在分层更新之后,一个强类型的数据集可以被拆分为两个项目,一个是指实体类,一个是指TableAdapter类型。两个项目一般都是类库项目,那么有一个问题就是如何动态地更改TableAdapter的连接字符串

 

DAL.NorthwindTableAdapters.TableAdapterManager manager = new DAL.NorthwindTableAdapters.TableAdapterManager();//先创建TableAdapterManager的实例
manager.CustomersTableAdapter = new DAL.NorthwindTableAdapters.CustomersTableAdapter();
//创建里面的某个Adapter实例
manager.Connection.ConnectionString="server=(local);database=northwind;integrated security=true";//动态修改连接
dataGridView1.DataSource = manager.CustomersTableAdapter.GetData();

 

image

image

原文地址:https://www.cnblogs.com/chenxizhang/p/1459400.html