NetTiers在事务中调用自定义存储过程

时间:2014-10-08 15:44:08

标签: c# transactions data-access-layer codesmith .nettiers

我有一个桌面c#项目,其中包含由codesmith nettiers 2.3生成的DAL

我想调用一个自定义的storedProcedure来更新事务中的DB中的某些记录

我尝试了以下内容:

TransactionManager mgr = DataRepository.Provider.CreateTransaction();
mgr.BeginTransaction();
//..... database operations using standard codesmith methods
// e.g. DataRepository.Table1Provider.Update(mgr, entityObj)


object[] parameters = new object[2];
// ....defining parameters
object objResult = DataRepository.Provider.ExecuteScalar(mgr,"dbo.my_storedProcedure", parameters);//this line throws an exception


// rest of code
mgr.Commit();

我在DataRepository.Provider.ExecuteScalar语句中遇到以下异常: 类型:NotSupportedException, 信息: {“使用GenericDatabase的连接不支持参数发现。您必须明确指定参数, 或配置连接以使用从支持参数发现的数据库派生的类型。“}

当我在没有事务管理器的情况下使用相同的命令时,它会毫无错误地处理罚款 即:

object objResult = DataRepository.Provider.ExecuteScalar("dbo.my_storedProcedure", parameters);// that works fine without exception!!

那么,是否存在 - 在codeSmith nettiers中 - 解决方法允许在事务中调用自定义存储过程,从而在出错时回滚其操作?

0 个答案:

没有答案