[sql2005] LINQ по Odbc теряет параметры ExecuteQuery<>
От: ilya.buchkin США http://engineering.meta-comm.com/
Дата: 10.07.09 22:20
Оценка:
// модераторы, если должно быть в .NET, пжалста двиньте, спасибо

для LINQ DataContext созданного из/вокруг OdbcConnection (вариант #1 ниже), не работает передача параметров в ExecuteQuery. этот же код в случае SqlConnection (вариант #2) — работает:

    public class result1 { public string db; }

    public static void test()
        {
        /* #1 */ var conn = new OdbcConnection( "driver={SQL Native Client};Server=.;Database=master;Trusted_Connection=yes;" );
        /* #2 */ var conn = new SqlConnection( "Database=.;Initial Catalog=master;Integrated Security=True;" );
        DataContext dc = new DataContext( conn );
        var parameters = new object[] { "m%" };
        var result = dc.ExecuteQuery<result1>( "select db_name(dbid) as [db] from master..sysdatabases where name like {0}", parameters ); // 1->Error, 2->OK
        result.ToList().ForEach( x => Console.WriteLine( "{0}", x.db ) );
        }


для SqlConnection, в профайлере видно что на SQL Server уходит вот это (и все хорошо):
exec sp_executesql N'select db_name(dbid) as [db] from master..sysdatabases where name like @p0',N'@p0 nvarchar(2)',@p0=N'm%'


а для OdbcConnection, на SQL Server уходит вот это (что хорошо не кончается — ERROR [42000] [Microsoft][SQL Native Client][SQL Server]Must declare the scalar variable "@p0"):
select db_name(dbid) as [db] from master..sysdatabases where name like @p0


встречался ли кто-нибудь с таким? спасибо заранее.
причина использовать OdbcConnection на сегодняшний день: есть много другого ODBC-зависимого кода с которым надо делить этот connection. при этом хотелось бы новое писать в терминах DataContext — если получится.
--
Ilya Buchkin
MetaCommunications Engineering, Iowa City — Санкт-Петербург
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.