// модераторы, если должно быть в .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 — если получится.