Код расширения параметра Dapper не обрабатывает запросы IN с помощью списков, однако DapperExtensions «предикатная система разрешает запросы IN и преобразует предикат запроса равных в запрос IN, если этот параметр является типом списка.
Если вы хотите использовать Dapper для сопоставления, вы можете расширить запрос sysobjects/sysindexes Jonathan Willcock как представление и создать класс для представления результатов. Затем можно собрать запрос DapperExtensions GetList с соответствующими параметрами
Просмотр Сотворение:
CREATE VIEW TableRowCounts
AS
SELECT t.name TableName, i.rows Records
FROM sysobjects t INNER JOIN sysindexes i ON i.ID = t.ID where t.xtype = 'U' and i.indid in (0,1)
класса для достижения результатов:
public class TableRowCounts
{
public string TableName { get; set; }
public int Records { get; set; }
}
DapperExtensions запроса гидрат результаты:
PredicateGroup query = new PredicateGroup();
List<string> tables;
tables = new List<string> { "table1", "table2" };
query.Predicates = new List<IPredicate>();
query.Predicates.Add(Predicates.Field<TableRowCounts>(f => f.TableName, Operator.Eq, tables));
List<TableRowCounts> results;
results = _connection.GetList<TableRowCounts>(query).ToList();
В качестве дополнительной заметки относительно производительности IN вы можете увидеть производительность dr op, если ваш список параметров (имена таблиц в этом экземпляре) больше, чем около 200 записей.
В какой базе данных у вас есть? –
Использование SQL Server – Manjari