Замена адаптеров таблиц на Oracle.DataAccess.Client (ODP.NET)
У меня есть устаревший DAL с примерно 100 адаптерами таблиц (DataSet xsd), но поскольку мы получили новые серверы с клиентом Oracle 12c, мне пришлось переключиться на Oracle.DataAccess.Client
(ODP.NET) из старого устарела System.Data.OracleClient
,
Единственная проблема, с которой я столкнулся, состоит в том, что я всегда получаю сообщение об ошибке: ORA-01008: не все переменные связаны при вызове адаптеров таблиц
Я прочитал, что я должен установить BindByName
в true
в OracleCommand
для каждого TableAdapter. Но как я могу это сделать, когда единственное место, где OracleCommand
используется в самом дизайнере TableAdapter?
Есть ли способ сделать это без расширения каждого TableAdapter, потому что у меня их около 100.
1 ответ
Я расширил каждый TableAdapter и создал новый SetBindByName()
метод, где я вынужден BindByName = true
в коллекции OracleCommand.
Вот так...
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);