【发布时间】:2014-03-03 03:13:57
【问题描述】:
我正在使用Dapper(感谢Sam,伟大的项目。)带有 DAL 的微型 ORM,由于某种原因,我无法使用输入参数执行存储过程。
在示例服务中,我有以下代码:
public void GetSomething(int somethingId)
{
IRepository<Something, SomethingEnum> repository = UnitOfWork.GetRepository<Something, SomethingEnum>();
var param = new DynamicParameters();
param.Add("@somethingId", dbType: DbType.Int32, value:somethingId, direction: ParameterDirection.Input);
var result = repository.Exec<Something>(SomethingEnum.spMyStoredProcedure, param);
...
}
当触发存储过程的执行时,会抛出一个 SqlException,说明我需要提供 'somethingId'
过程或函数“spMyStoredProcedure”需要参数“@somethingId”,但未提供。
我的DAL是基于Pencroff的这个github项目类似的。
我错过了什么吗?
更新:我实际上是通过 SomethingEnum 传递 commandType:
public class SomethingEnum : EnumBase<SomethingEnum, string>
{
public static readonly SomethingEnum spMyStoredProcedure = new SomethingEnum("spMyStoredProcedure", "[dbo].[spMyStoredProcedure]", CommandType.StoredProcedure);
public SomethingEnum(string Name, string EnumValue, CommandType? cmdType): base(Name, EnumValue, cmdType)
{
}
}
【问题讨论】:
标签: c# sql stored-procedures data-access-layer dapper