如何在 C# 中获取给定 TableAdaptor 和 SqlDataAdaptor 的 Sql 命令对象 (.NET 2.0)

How would you get the Sql Command objects for a Given TableAdaptor and SqlDataAdaptor in C# (.NET 2.0)

提问人:CrashTECH 提问时间:9/19/2008 最后编辑:BartoszKPCrashTECH 更新时间:10/7/2013 访问量:306

问:

我正在为我们的应用程序创建一个通用的错误处理/日志记录类。目标是记录异常信息、有关类和函数(以及参数)的信息,以及有关对象的信息(如果相关)。System.Data.SqlClient.SqlCommand

我希望能够处理传入 、 和 。SqlCommandsTableAdaptorsSqlDataAdaptors

我是使用反射的新手,我知道这是可以做到的,我只是不确定如何去做。请指教。

C# SQL 异常 反射 错误处理

评论


答:

0赞 user1228 9/19/2008 #1

这就是你在说的吗?

SqlDataAdapter da = new SqlDataAdapter();
var cmd1 = ((IDbDataAdapter)da).DeleteCommand;
var cmd2 = ((IDbDataAdapter)da).UpdateCommand;
var cmd3 = ((IDbDataAdapter)da).SelectCommand;
var cmd4 = ((IDbDataAdapter)da).InsertCommand;

SqlDataAdapter 实现 IDbDataAdapter,它具有所有 CRUD 命令的 getter/setter。SqlDataAdapter 显式实现这些内容,因此除非您首先将其强制转换为接口,否则它们不会显示在类的签名中。无需反射。

评论

0赞 CrashTECH 9/20/2008
强类型数据集的 TableAdaptor 是否有类似的方法?
0赞 9/22/2008
我认为它完全相同,因为这些强类型数据适配器只是 VS 包装(通过工具)在类型安全类中的常规适配器。如果类型安全包装器未从 IDbDataAdapter 扩展,则可能需要手动添加方法才能访问内部适配器。