Я пытаюсь использовать Dapper для наших сложных запросов, чтобы удалить любые потерянные накладные расходы, которые ранее существовали с NH.
У меня есть следующий запрос (обратите внимание, что он значительно сократился):
SELECT DISTINCT *
FROM tasks t
WHERE t.initials = @UserInits
Который вызывается через наш репозиторий так:
taskRepo.RawExec<TaskListItemDTO>(Query,new {UserInits = "SAS"})
Наша реализация DapperExec состоит в следующем:
public IEnumerable<T> RawExec<T>(string SQL, object param)
{
return _session.Connection.Query<T>(SQL,param);
}
Но Dapper, похоже, не добавляет параметры в запрос, и в результате мы получаем синтаксические ошибки.
Если это поможет, мы подключаемся через ODBC к Informix.
Спасибо
Пример кода обновления:
Извините, что так долго, был очень занят работой! Ниже приведен пример для сервера MS SQL (2008), который должен просто запрашивать sys.all_objects (systables?) со значением параметра 1 или 0, но в этом примере, поскольку ODBC не использует именованные параметры, это не сработает. .
using Dapper;
using DapperSQL;
using System.Collections.Generic;
using System.Data;
using System.Data.Odbc;
namespace DapperTests
{
public class SQLEx
{
private OdbcConnection GetConnection()
{
var cnn = new OdbcConnection("DSN=ODBCSOURCE");
cnn.Open();
// wrap the connection with a profiling connection that tracks timings
return cnn;
}
public IEnumerable<object> DapperTest()
{
using (OdbcConnection conn = GetConnection())
{
return conn.Query("SELECT * FROM sys.all_objects where is_ms_shipped = ?", new { is_ms_shipped = 1 });
}
}
}