2011-07-22 159 views
0

我刚刚将我们的Web应用程序数据库从sybase sql任意位置11迁移到SQL Server 2008 R2 express,当我尝试编译与SQL Server接口的WCF服务时,我出现了多个错误,其中最明显的是下面的错误当我们的数据库是sybase时,我从来没有看到过这个问题。无效的参数错误

Error 5 The best overloaded method match for 
'GlobeMailServiceLibrary.GMDatabaseService.KioskDataSetTableAdapters.Kiosk.CreateFolder(int?, 
string, bool?, bool?, ref int?)' has some invalid arguments 
C:\WebMailDev\Code\GlobeMailServiceLibrary\GMDatabaseService\GMDatabaseService.40 
13 GlobeMailServiceLibrary 

这是从哪儿存储过程调用和执行WCF服务方法: -

private int CreateFolder(int iUser, string strFolder, bool bUserCreate, bool bOutgoing) 
    { 
     int iFolder; 
     DBEncoder.EncodeObject(ref strFolder); 
     KioskAdapter.CreateFolder(iUser, strFolder, bUserCreate, bOutgoing, out 
            iFolder);    
     return iFolder; 
    } 

这里是存储过程定义: -

create procedure dbo.CreateFolder(@v_userID integer,@v_foldername varchar(512),@v_IsUserDefined 
            bit,@v_IsOutGoing bit,@v_folderID integer Output) 
    AS 
    begin 
     --set option MAX_STATEMENT_COUNT = 0; 
     --set option MAX_CURSOR_COUNT = 0; 
     insert into GCK_Folder(Foldername,IsUserDefined,IsOutGoing,UserID) values( 
           @v_foldername,@v_IsUserDefined,@v_IsOutGoing,@v_userID) ; 
     set @v_folderID = @@IDENTITY 
end 
go 

我注释掉设置OPTION MAX_STATEMENT_COUUNT和MAX_CURSON_COUNT,因为我不知道SQL Server 2008 R2 express中Sybase的等效命令。

+4

嗯...例外是告诉你,问题出现在'CreateUser'中,所以也许这就是你应该开始寻找的地方。换句话说,我不认为'CreateFolder'是这里的问题。 –

+0

这是一个纯粹的C#问题,与WCF,SQL Server或ASP.NET无关。 –

+4

您需要将代码发布到'CreateUser'。 – doctorless

回答

0

您遇到的问题是GlobeMailServiceLibrary.GMDatabaseService.KioskDataSetTableAdapters.Kiosk.CreateFolder期望ref int?作为最后一个参数,而您传递的是out参数,而不是所需的签名。