Я хочу иметь класс, который определяет данные моего параметра для хранимой процедуры. Это будет очень простой объект:
public class MyQueryData : SprocObjectBase
{
public int Value1 { get; set; }
public string Value2 { get; set; }
public bool Value3 { get; set; }
...
}
Он будет наследоваться от базового класса с общими значениями, такими как имя.
public abstract class SprocObjectBase
{
public string SprocName { get; set; }
}
Простые типы для легкого преобразования. Но будет больше, чем один из этих объектов, и каждый из них будет другим.
Затем я хочу иметь возможность перебирать свойства объекта и добавлять значения параметров в мой запрос, предполагая, что имена свойств являются моими именами параметров sproc. Итак, мой код выглядит примерно так:
public void Execute<T>(T entity) where T : SprocObjectBase
{
IQuery query = Session.GetNamedQuery(entity.SprocName);
var properties = typeof(T).GetProperties();
foreach (var prop in properties)
{
//??????????????
}
query.ExecuteUpdate();
}
У меня вопрос: как использовать query.SetParameter<>()
с информацией о свойствах внутри цикла foreach для общего добавления каждого свойства в качестве параметра к хранимой процедуре?
EDIT:
Мое текущее использование, которое не компилируется, выглядит так:
query.SetParameter<prop.GetType()>(prop.Name, prop.GetValue(entity, null));