我希望有一个类为存储过程定义参数数据。它将是一个非常简单的对象:
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; }
}
简单的类型便于转换。但是,这些对象将不止一个,而且每个都是不同的。
然后,我希望能够迭代对象的属性,并将参数值添加到我的查询中,假设属性名是我的存储过程参数名。所以,我的代码看起来是这样的:
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循环中的属性信息将每个属性作为参数一般添加到存储过程中?
编辑:
我当前的用法(未编译)如下所示:
query.SetParameter<prop.GetType()>(prop.Name, prop.GetValue(entity, null));