我有一个像100 TableAdapters (DataSet xsd)的旧DAL,但是因为我们有了Oracle客户端12c的新服务器,我不得不从旧的已弃用的System.Data.OracleClient
切换到Oracle.DataAccess.Client
(ODP.NET)。
我现在唯一的问题是,我总是得到一个错误:ORA-01008:不是所有的变量绑定时调用表适配器。
我读到我必须为每个TableAdapter在OracleCommand
中将BindByName
设置为true
。但是,我怎么能做到这一点,当唯一的地方使用OracleCommand
是在TableAdapter本身的设计器?
有没有办法在不扩展每个TableAdapter的情况下做到这一点,因为我有大约100个TableAdapter
我所做的是扩展每个TableAdapter并创建一个新的SetBindByName()
方法,其中我在oracleccommand集合上强制BindByName = true
。
一样……
public partial class V_CUSTOMER_GLOBALTableAdapter
{
public void SetBindByName(bool value = true)
{
foreach (Oracle.DataAccess.Client.OracleCommand cmd in this.CommandCollection)
{
cmd.BindByName = value;
}
}
}
然后,当我创建TableAdapter的实例时,我调用了新的SetBindByName()
方法。
V_CUSTOMER_GLOBALTableAdapter ta = new V_CUSTOMER_GLOBALTableAdapter();
ta.SetBindByName(true);