из предыдущего опыта, который я всегда нахожу, если вам нужно «отложить», что-то еще не так.
blockquote>Право. Здесь я подозреваю, что вы предполагаете, что чтение на сокете вернет полное сообщение.
Но TCP / IP является потоковым протоколом и не включает в себя понятия «Сообщения». Чтобы успешно использовать TCP / IP напрямую, вы должны определить «протокол формирования сообщений», чтобы сообщить удаленному хосту, сколько байтов ожидать. Я не вижу, чтобы вы что-то писали перед сообщением, поэтому я подозреваю, что этого не хватает.
Простое решение, которое используют многие люди, - это всегда отправлять 4-байтовое целое число в начале сообщения, указывающее количество байтов, которое будет отправлено. Затем считыватель может выполнить 4-байтовое чтение, после чего следует цикл чтения, пока не будет прочитано ожидаемое количество байтов.
Я также рекомендую ODP.NET. Выберите последнего поставщика (http://www.oracle.com/technology/tech/windows/odpnet/index.html). Это может соединиться с базой данных Oracle 9.2 или более новым выпуском базы данных.
Поставщик данных MS для Oracle очень ограничен. Вы не можете работать с массивами, например, и определяемыми пользователем типами. И почему Microsoft оказала бы хорошую поддержку для соединения с Oracle?
Можно также проверить поставщика devart: http://www.devart.com/dotconnect/oracle/. Это поддерживает платформу объекта.
Опции OLE DB и ODBC дампа, если у Вас есть прямой поставщик доступа к данным, нет никакой потребности в использовании OLE DB или ODBC.
Я рекомендую Поставщику данных Oracle для.NET.
Microsoft только что объявила о прекращении поддержки System.Data.OracleClient .
Я думаю, это оставляет вам несколько вариантов (по крайней мере):
DevArt также имеет реализацию LINQ to Oracle, которая может быть вам интересным.