首页 新闻 搜索 专区 学院

编译没问题,但运行调试时找不到方法, 奇怪的问题。

0
悬赏园豆:30 [已解决问题] 解决于 2015-07-13 09:48

三层架构, 在DAL层调用 DbHelperSQL.RunProcedureGo方法

 

DAL层RunProcedureGo方法:

 

 

DbHelperSQL类:

 

 在BLL层调试无法进入DAL层,直接抛异常, 说找不到方法。  我已经试过删除引用、清理解决方案、重新生成各层, 重启VS, 都不行。  

 

 

 

问题补充:

能在VS里定位到该方法,编译也没问题,  但调试时就是找不到。 

搞了一上午了。 江湖救急。。。

 

我用.net Reflector反编译Bin目录下的DbHelperSQL类, 发现有这个方法啊, 这是为啥。 

 

 

奋奋奋的主页 奋奋奋 | 初学一级 | 园豆:32
提问于:2015-06-25 11:30
< >
分享
最佳答案
0

别用 asp.net,建一个 Console 或者窗体项目,然后你再调用 trans.dbUtility.DbHelperSQL.RunProcedureGo 试试。

收获园豆:20
Launcher | 高人七级 |园豆:45045 | 2015-06-25 13:06

问题解决了。 太奇怪了,  一个解决方案中6个项目,  

之前输出窗口的生成消息明明写的是6个成功, 0个跳过,0个失败。 

我在解决方案中新建了个console的项目后, 再重新生成解决方案时,  web层就报错了,  改正里面的错误, 就可以了。 

这有点意思。。。还是无法解释……

奋奋奋 | 园豆:32 (初学一级) | 2015-06-25 13:31
其他回答(3)
0

看见parameters那个实参下的红色波浪线了没有,参数类型不对,所以运行提示找不到方法。

收获园豆:1
傲慢与偏剑 | 园豆:381 (菜鸟二级) | 2015-06-25 12:25
0

你最上面那句修改成

IDataParameter[] parameters = {

new sqlparameter

}

收获园豆:9
爱编程的大叔 | 园豆:30684 (高人七级) | 2015-06-25 12:34
 string rowsMessege = "";
            IDataParameter[] parameters = {
                    new SqlParameter("@username", SqlDbType.VarChar,50),
                    new SqlParameter("@autoid", SqlDbType.VarChar,50),
                    new SqlParameter("@powerid", SqlDbType.Int,4),
                    new SqlParameter("@recive", SqlDbType.VarChar,50),
                    new SqlParameter("@phone", SqlDbType.VarChar,15), 
                    new SqlParameter("@address", SqlDbType.VarChar,512),
                    new SqlParameter("@ProductList", SqlDbType.VarChar,800),
                    new SqlParameter("@remarks", SqlDbType.VarChar,800),
                    new SqlParameter("@invoice", SqlDbType.Bit),
                    new SqlParameter("@mReturnMSG", SqlDbType.VarChar,500)};
            parameters[0].Value = username;
            parameters[1].Value = autoid;
            parameters[2].Value = powerid;
            parameters[3].Value = recive;
            parameters[4].Value = phone;
            parameters[5].Value = address;
            parameters[6].Value = productList;
            parameters[7].Value = remarks;
            parameters[8].Value = invoice;
            parameters[9].Direction = ParameterDirection.Output;


            int count = DbHelperSQL.RunProcedureGo("[t_A_order_submit]", parameters, out rowsMessege);
            if (count != 0)
                return rowsMessege;
            else return "0";

改了也一样啊。 

支持(0) 反对(0) 奋奋奋 | 园豆:32 (初学一级) | 2015-06-25 12:42

@奋奋奋: 看你的错误信息,就是找不到

trans.dbUtility.DbHelperSQL.RunProcedureGo 了,你还是得看看是命名空间还是DLL版本得问题了。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30684 (高人七级) | 2015-06-25 12:48

@爱编程的大叔: 

DAL和dbUtility都在同一个解决方案, 引用的是解决方案中的项目。  

我现在在DBUtility的DbhelperSQL类中新建其它方法, 通通都提示找不到,,,,,,  

我已经清空了bin, 重新引用了, 重新生成了, 还是不行。 

但是在VS中, 可以F12定位到该方法,  在该方法上查找使用也能找到使用者。 

 

刚才我把DBUtility这个项目的程序集版本改了下, 现在查看DAL引用的, 引用的版本正确:

又检查了遍DBUtility中所有类的命名空间, namespace 通通都是tansar.DBUtility

结果还是不行,  这该如何是好……

支持(0) 反对(0) 奋奋奋 | 园豆:32 (初学一级) | 2015-06-25 13:07

@爱编程的大叔: 

问题解决了。 太奇怪了,  一个解决方案中6个项目,  

之前输出窗口的生成消息明明写的是6个成功, 0个跳过,0个失败。 

我在解决方案中新建了个console的项目后, 再重新生成解决方案时,  web层就报错了,  改正里面的错误, 就可以了。 

这有点意思。。。还是无法解释……

支持(0) 反对(0) 奋奋奋 | 园豆:32 (初学一级) | 2015-06-25 13:32
0

怎么解决的

S_Wilson | 园豆:202 (菜鸟二级) | 2020-01-18 12:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册