Здравствуйте, mr.sashich!
сабж. Но если посмотреть на уже имеющиеся провайдеры в качестве примера, то можно написать свой за пол-часа.
Если получится, то пишите сюда — добавим в стандартную поставку.
... << RSDN@Home 1.2.0 alpha rev. 692>>
Здравствуйте, ili, Вы писали:
ili>а не совсем.... я как то тыркнулся, и в первые 20 минут напоролся на багу в "официальном" .net клиенте для посгреса )))
Это, полагаю, давно было. Может её уже и поправили

... << RSDN@Home 1.2.0 alpha rev. 692>>
Здравствуйте, Блудов Павел, Вы писали:
БП>Здравствуйте, ili, Вы писали:
ili>>а не совсем.... я как то тыркнулся, и в первые 20 минут напоролся на багу в "официальном" .net клиенте для посгреса )))
БП>Это, полагаю, давно было. Может её уже и поправили
кстать, под "официальным" я имел ввиду
npgsql
может и поправили, вот гляжу релиз был 11-го июля... а я его ковырял где-то с полгода назад... тогда релизов едвали не в течении года небыло, я уж было решил что проект ваще помер =))
какая бага была — толком не помню, но дико плевая, в каком-то методе, то-ли проверку условия нужно было на строчку вверх перетащить, то-ли вставить...
и еще, что мне тогда не понравилось — DeriveParameters вертал параметры хранимок без имен...
Здравствуйте, Блудов Павел, Вы писали:
БП>Здравствуйте, ili, Вы писали:
БП>Это, полагаю, давно было. Может её уже и поправили
NngsqlCommandBuilder.DeriveParameters не переваривал функции без параметров:
public static void DeriveParameters (NpgsqlCommand command)
{
/* тут обращение к системным таблицам */
String types = (String) c.ExecuteScalar();
if (types == null)
throw new InvalidOperationException (String.Format(resman.GetString("Exception_InvalidFunctionName"), command.CommandText));
command.Parameters.Clear();
//ili fix:
// what if function has no parameters??
if (types.Length == 0)
return;
Int32 i = 1;
/* при пустой строке форич выполняется один раз, и, вроде, вылетал InvalidOperationException(String.Format("Invalid parameter type: {0}", s)); */
foreach(String s in types.Split())
{
if (!c.Connector.OidToNameMapping.ContainsOID(Int32.Parse(s)))
{
command.Parameters.Clear();
throw new InvalidOperationException(String.Format("Invalid parameter type: {0}", s));
}
/* а вот тут наколдовываются имена параметров... хотя их можно выковырять по человечески (pgAdminIII выковыривает) */
command.Parameters.Add(new NpgsqlParameter("parameter" + i++, c.Connector.OidToNameMapping[Int32.Parse(s)].NpgsqlDbType));
}
}