我有一个带有100个TableAdapters(DataSet xsd)的遗留DAL,但由于我们使用Oracle客户端12c获得了新服务器,因此我不得不从旧的已弃用的Oracle.DataAccess.Client
(ODP.NET)切换到System.Data.OracleClient
(ODP.NET)。 1}}。
我现在唯一的问题是我总是收到错误: ORA-01008:调用表适配器时并非所有变量绑定。
我读到我必须为每个TableAdapter在BindByName
中将true
设置为OracleCommand
。但是,如果使用OracleCommand
的唯一地方是TableAdapter本身的设计者,我怎么能这样做呢?
有没有办法在没有扩展每个TableAdapter的情况下执行此操作,因为我喜欢其中的100个。
答案 0 :(得分:0)
我做的是扩展了每个TableAdapter并创建了一个新的SetBindByName()
方法,我在OracleCommand集合上强制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);