Замена адаптеров таблиц на 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);
Другие вопросы по тегам