Я видел много сообщений о создании объектов ExpandoObject
и т. Д., Но это не работает в моем случае. Мне нужно создать объект, какПроцедура создания динамического объекта для Dapper
var someObj = new {
term1 = "someValue",
term2 = "other",
...
};
В основном, мы используем Dapper
и нам нужно создать запрос динамически, в котором условие WHERE
изготовлен из заданного массива аргументов. Мы не обобщающие запросы! Это единственный метод, получающий переменное количество аргументов, и мы должны проверять OR
каждое значение в одном столбце.
Прямо сейчас, единственное жизнеспособное решение - вернуть и использовать System.Data.SqlClient.SqlConnection
, или есть ли способ сделать эту работу?
Update:
Это то, что, скорее всего, должен работать, но не делает:
string inWhere = null;
dynamic inTerms = new ExpandoObject();
IDictionary<string, object> inTermsDict = inTerms;
if (!(string.IsNullOrEmpty(filter.Term) || string.IsNullOrWhiteSpace(filter.Term))) {
inWhere = "(" + string.Join(" OR ", filter.Terms.Select((t, i) => "{0} LIKE @p" + i)) + ")";
int termIndex = 0;
foreach (string term in filter.Terms) {
inTermsDict.Add("p" + (termIndex++), term);
}
}
// ...
var rows = db.Query("SELECT * FROM {table} WHERE {baseCondition}" +
(string.IsNullOrEmpty(inWhere) ? "" : string.Format(" AND " + inWhere, "columnName")),
inTerms as object);
Вы имеете в виду 'ExpandoObject'? Пожалуйста, напишите, как вы собираетесь называть эту процедуру, потому что я не видел ничего процедурного в ваших примерах. –
Очень хорошо, я добавляю дополнительную информацию ... –