DBNull.Value | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Смотрю на фрагмент кода:
и - как то нравится он мне. Если эе попробовать написать:
ругается Цитата: Вопрос - можно как сделать покрасивее? |
Re: DBNull.Value | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Дописать явный каст в требуемый тип Кто есть com - какого типа это объект? SqlParameterCollection, OracleParameterCollection или вообще чего-то другого?
В любом случае метод Add(string, object) помечен как устаревший... ------------------ WBR, Igor |
Re: DBNull.Value | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Так?
Да, именно так.
Вот те на - уже устарел... Как и я Если устарел - что же тогда использовать? На EF переходить? Исправлено 1 раз(а). Последнее : S-type, 21.04.17 13:28 |
Re: DBNull.Value | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Да. Метод .AddWithValue() Там косяк с перегрузками - есть .Add(string, enum) и ежели гнать парамтером напрямую int, то будет выбрана эта перегрузка, а вовсе не с object. Вот чтобы избежать такой потенциальной проблемы перегрузку .Add(string, object) пометили obsolete, и добавили метод .AddWithValue(string, object). Впрочем, вполне возможно (этого нельзя утверждать по одному лишь мелкому фрагменту) что данный код вообще не должен оперировать "конкретными" типами OracleCommand, OracleParameterCollection... А должен работать с абстрактными DBCommand, DBParameter, DBParameterCollection или, ещё лучше, с интерфейсами IDbCommand, IDataParameterCollection, IDbDataParameter... А там "параметры" создаются и добавляются совсем по другой схеме - более явной и многословной... IDbCommand.CreateParameter(), IDbCommand.Parameters.Add(), IDbDataParameter.Value = Но я ещё раз уточню - не видя всего проекта нельзя сказать правильно или неправильно в данном месте применять "конкретный" класс жёстко привязанный к конкретному типу провайдера. М.б. это единственный вариант, если нужно использовать "специфические" типы/методы... Хотя DateTime, конечно, таковым не является. Но кто ж знает что там ещё имеется ------------------ WBR, Igor |
Re: DBNull.Value | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Изменил программу, перекомпилировал - всё отлично работает!
Сейчас код примерно такой:
Не поулчается сделать
ругается: Цитата: Заменил на
результат тот же. |
Re: DBNull.Value | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Информация про "устарела" взята с msdn.microsoft.com? Сдаётся мне, что System.Data.OracleClient из System.Data.OracleClient.dll, и Oracle.ManagedDataAccess.Client из Oracle.ManagedDataAccess.dll - это несколько разные миры. И, надо смотреть в docs.oracle.com . Потому, заменить Add на AddWithValue не получится.
Но, главное - выражение уже сократил, код стал красивее. Спасибо. Исправлено 2 раз(а). Последнее : S-type, 21.04.17 15:51 |
Re: DBNull.Value | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Значит в ODAC-е оракловцы ещё не сделали. В MS провайдерах во всех прописали это
Вот пример простейшего провайдеро-независимого кода. К сожалению с ораклом это так просто не пройдёт - у них и типы "свои" порой приходится явно указывать (авто-преобразования косячат), да и на кой-то чёрт сделали параметры IDisposable-типами... В других провайдерах этого нет, и сами базовые типы и интерфейсы не предусматривают такой реализации... Индусы кодили, одно слово ------------------ WBR, Igor |
© 2000-2024 Fox Club  |