为了支持流行的数据库,如sqlserver、oracle和mysql,我们将原始的sql条件Query()方法更改为来自DapperExtension的GetList()方法,但是使用GetList()时会出现性能问题,似乎它会首先读取全表而不是 sql 查询。
sql查询方法:
TaskViewEntity taskView = null; string sql = @"SELECT * FROM vwWfActivityInstanceTasks WHERE ActivityInstanceID=@activityInstanceID AND ProcessInstanceID=@processInstanceID "; var list = Repository.Query<TaskViewEntity>(sql, new { processInstanceID = processInstanceID, activityInstanceID = activityInstanceID }).ToList();
linq 方法:
var sqlQuery = (from tv in Repository.GetAll<TaskViewEntity>(conn, trans) where tv.ActivityInstanceID == activityInstanceID && tv.ProcessInstanceID == processInstanceID select tv ); var list = sqlQuery.ToList<TaskViewEntity>(); //The dapper extension GetList() method public IEnumerable<T> GetAll<T>(IDbConnection conn, IDbTransaction trans) where T : class { var dataList = conn.GetList<T>(null, null, trans); return dataList; }