2016-06-27 3 views
1

У меня довольно большое приложение, использующее dapper и Oracle. Теперь я хочу поддерживать SQL Server.Использование: вместо @ для параметров запроса

Проблема заключается в том, что все мои запросы написаны с :, а не с @, поэтому SQL Server жалуется:

Неправильный синтаксис около «:»

Можно ли сказать щеголеватый, что он должен заменить :@ или мне нужно сделать это в моем собственном коде?

+0

вам следует сделать это вручную. –

+0

Dapper - это очень тонкий * слой поверх вашего 'SqlConnection' или' OracleConnection'. Я очень сомневаюсь, что он имеет какие-либо средства для замены соглашений об именах параметров. Это будет что-то вроде ORM, вроде Entity Framework, вероятно, для вас –

ответ

0

Это не построен, но вы могли бы обеспечить его относительно просто написав метод пользовательских расширений и делать то, что твики вам нужно:

public static IEnumerable<T> MyMagicQuery<T>(this IDbConnection conn, 
    string query, object args = ...) 
{ 
    query = RunSomeRegexReplace(query); 
    return conn.Query<T>(query, args, ...); 
} 

Однако, в то время как регулярное выражение для этого особо не облагая налогом, то Большая проблема заключается в том, что T/SQL и PL/SQL являются различными вариантами SQL. Многие функции вообще не будут работать при простом прямом переводе. Другие функции могут работать, но требуют различного синтаксиса. Третья группа функций может работать синтаксически, но дают разные результаты (да, действительно) или имеют очень разные характеристики производительности, если не переписаны для использования специфических для РСУБД предпочтений.

По существу, изменение между РСУБД намного больше, чем просто изменение @ на :.