将SQL Server异常传递给.net以供ExecuteSprocAccessor使用

时间:2014-09-22 04:24:50

标签: c# sql asp.net sql-server-2012 enterprise-library-5

G'每个人都这样。 需要帮助来最终确定类似问题的答案。不幸的是,由于我没有足够的积分,我无法向相关人员提出最终解决方案。原始问题在这里:" [将SQL Server例外传递给.net] [1]"

所以, 的问题: SQL Server 2012中的TRY / CATCH语句吞下我想要传递或重新抛回EF 5.0的异常。 只要异常没有Try / catch,.NET代码就可以毫无问题地获得它。

尝试解决: 1. FOR SQL SERVER SIDE:我们尝试使用THROW / RAISEERROR,在Try / Catch块内外引发异常,记录原始错误并重新抛出它。 2.从.NET SIDE尝试按计划重载" ExecuteSprocAccessor"并改回基本代码    " ...      SqlDataAdapter dataadap = new SqlDataAdapter(command);      dataadap.Fill(DT);    " 没有任何效果 3.另一个选择 - 猜测 - 是考虑SQL SERVER中可能阻止它的一些参数 - 不知道在哪里看

解决方案: 寻求帮助并建议原始如何设法压制TRY / Catch行为。 谢谢!

1 个答案:

答案 0 :(得分:0)

我们花了一天时间进一步尝试深入了解它,并且意外地找到了临时解决方案。 由于没有初步回复,我将此作为解决方案发布。虽然,它更像是一个临时解决方案。 “db.ExecuteDataSet(dbc)” 的使用工作正常,提供了从Catch块从SQL Server 2012传递的异常的相关处理。对于我们来说,它表明在新版本中使用EL6.0和/或ADO.NET时我们还不知道一些技巧或问题

    *using ( DbCommand dbc = db.GetStoredProcCommand("[Personnel].[uspWebLogin]"))
            {
                db.AddInParameter(dbc, "UserLogin", DbType.String, user.UserLogin);
                db.AddInParameter(dbc, "UserPassword", DbType.String, user.Password);
                DataSet ds = db.ExecuteDataSet(dbc);
                DataTableReader dtr =  ds.CreateDataReader();
                
				// string count just to check theat the core query actualy worked when there is no exception
				string count = dtr.FieldCount.ToString();
				......
                return new WebUser();
            }*

现在的问题是如何优化对象和返回集的最佳映射,而不是编写“ExecuteSprocAccessor”和“IRowMapper”为我们做的代码堆。

感谢阅读。任何进一步的意见或建议仍然受到欢迎。欢呼声。