C# 无法从System.Data.SqlDbType转换为System.Data.DbType DbCommand-retcommmand; var attachmentDetails=this.converttodata(curfewRequestForSave.Attachment); List SqlparamUpdate=新列表(); //SqlparamUpdate.Add(新命令参数(“@PI_CurfewRelaxationId”,curfewRequestForSave.CurfewRelaxationId,ParameterDirection.Input,DbType.Int64)); SqlparamUpdate.Add(新命令参数(“@PI_CurfewRelaxationId”,curfewRequestForSave.CurfewRelaxationId,ParameterDirection.Input,DbType.Int64)); 添加(新的CommandParameter(“@PI_CurfewRelaxationRequestId”,“工作流的TODO代码”,ParameterDirection.Input,DbType.String)); 添加(newcommandParameter(“@PI_CurfewRequestCode”,String.Empty,ParameterDirection.Input,DbType.String)); 添加(新的CommandParameter(“@PI_StaffSeqId”,curfewRequestForSave.StaffSeqId,ParameterDirection.Input,DbType.Int64)); SqlparamUpdate.Add(新的CommandParameter(“@PI_RequestCategoryId”,curfewRequestForSave.RequestCategoryId,ParameterDirection.Input,DbType.Int32)); 添加(新命令参数(“@PI_RequestTypeId”,curfewRequestForSave.RequestTypeId,ParameterDirection.Input,DbType.Int32)); 添加(newcommandParameter(“@PI_Reason”,curfewRequestForSave.Reason,ParameterDirection.Input,DbType.String)); 添加(新的CommandParameter(“@PI_PermissionRequiredFrom”,curfewRequestForSave.PermissionRequiredFrom,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_PermissionRequiredTill”,curfewRequestForSave.PermissionRequiredTill,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_RelationshipId”,curfewRequestForSave.RelationshipId,ParameterDirection.Input,DbType.Int32)); SqlparamUpdate.Add(新命令参数(“@PI_party_Blood_Name”,curfewRequestForSave.party_Blood_Name,ParameterDirection.Input,DbType.String)); 添加(新命令参数(“@PI_ReturnDate”,curfewRequestForSave.ReturnDate,ParameterDirection.Input,DbType.DateTime)); SqlparamUpdate.Add(新的CommandParameter(“@PI_shiftingsFrom”,curfewRequestForSave.shiftingsFrom,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_shiftitmingsto”,curfewRequestForSave.shiftitmingsto,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_CreatedBy”,curfewRequestForSave.StaffSeqId,ParameterDirection.Input,DbType.Int64)); 添加(新命令参数(“@PI_UpdatedBy”,curfewRequestForSave.StaffSeqId,ParameterDirection.Input,DbType.Int64)); 添加(新的CommandParameter(“@PI_CurfewRquestAttchMntDetails”,attachmentDetails,ParameterDirection.Input,SqlDbType.Structured)); SqlparamUpdate.Add(newcommandParameter(“@PO_MESSAGE”,”,ParameterDirection.Output,DbType.String,500)); 添加(newcommandParameter(“@PO_RETURN_CODE”,0,ParameterDirection.Output,DbType.Int32)); retcommmand=\u sqldbframework.executesPNQueryPARM(“QAG\u GEMS\u宵禁\u请求\u保存\u细节\u过程”,SqlparamUpdate);

C# 无法从System.Data.SqlDbType转换为System.Data.DbType DbCommand-retcommmand; var attachmentDetails=this.converttodata(curfewRequestForSave.Attachment); List SqlparamUpdate=新列表(); //SqlparamUpdate.Add(新命令参数(“@PI_CurfewRelaxationId”,curfewRequestForSave.CurfewRelaxationId,ParameterDirection.Input,DbType.Int64)); SqlparamUpdate.Add(新命令参数(“@PI_CurfewRelaxationId”,curfewRequestForSave.CurfewRelaxationId,ParameterDirection.Input,DbType.Int64)); 添加(新的CommandParameter(“@PI_CurfewRelaxationRequestId”,“工作流的TODO代码”,ParameterDirection.Input,DbType.String)); 添加(newcommandParameter(“@PI_CurfewRequestCode”,String.Empty,ParameterDirection.Input,DbType.String)); 添加(新的CommandParameter(“@PI_StaffSeqId”,curfewRequestForSave.StaffSeqId,ParameterDirection.Input,DbType.Int64)); SqlparamUpdate.Add(新的CommandParameter(“@PI_RequestCategoryId”,curfewRequestForSave.RequestCategoryId,ParameterDirection.Input,DbType.Int32)); 添加(新命令参数(“@PI_RequestTypeId”,curfewRequestForSave.RequestTypeId,ParameterDirection.Input,DbType.Int32)); 添加(newcommandParameter(“@PI_Reason”,curfewRequestForSave.Reason,ParameterDirection.Input,DbType.String)); 添加(新的CommandParameter(“@PI_PermissionRequiredFrom”,curfewRequestForSave.PermissionRequiredFrom,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_PermissionRequiredTill”,curfewRequestForSave.PermissionRequiredTill,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_RelationshipId”,curfewRequestForSave.RelationshipId,ParameterDirection.Input,DbType.Int32)); SqlparamUpdate.Add(新命令参数(“@PI_party_Blood_Name”,curfewRequestForSave.party_Blood_Name,ParameterDirection.Input,DbType.String)); 添加(新命令参数(“@PI_ReturnDate”,curfewRequestForSave.ReturnDate,ParameterDirection.Input,DbType.DateTime)); SqlparamUpdate.Add(新的CommandParameter(“@PI_shiftingsFrom”,curfewRequestForSave.shiftingsFrom,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_shiftitmingsto”,curfewRequestForSave.shiftitmingsto,ParameterDirection.Input,DbType.DateTime)); 添加(新的CommandParameter(“@PI_CreatedBy”,curfewRequestForSave.StaffSeqId,ParameterDirection.Input,DbType.Int64)); 添加(新命令参数(“@PI_UpdatedBy”,curfewRequestForSave.StaffSeqId,ParameterDirection.Input,DbType.Int64)); 添加(新的CommandParameter(“@PI_CurfewRquestAttchMntDetails”,attachmentDetails,ParameterDirection.Input,SqlDbType.Structured)); SqlparamUpdate.Add(newcommandParameter(“@PO_MESSAGE”,”,ParameterDirection.Output,DbType.String,500)); 添加(newcommandParameter(“@PO_RETURN_CODE”,0,ParameterDirection.Output,DbType.Int32)); retcommmand=\u sqldbframework.executesPNQueryPARM(“QAG\u GEMS\u宵禁\u请求\u保存\u细节\u过程”,SqlparamUpdate);,c#,sql,sql-server-2008-r2,commandparameter,sqldbtype,C#,Sql,Sql Server 2008 R2,Commandparameter,Sqldbtype,我应该使用CommandParameter,因为我使用的是其他团队定义的方法来插入DB,在这种情况下,我无法更改为SQLCommandParameter,在这种情况下,我如何传递表值参数 我明白了 Error无法从System.Data.SqlDbType转换为System.Data.DbType 如果无法将CommandParameter更改为SQLCommandParameter,则此转换错误是不可避免的。因此,您的意思是,进行批量插入的唯一方法是XML。如果您忽略了dbtype(SqlDb

我应该使用
CommandParameter
,因为我使用的是其他团队定义的方法来插入DB,在这种情况下,我无法更改为
SQLCommandParameter
,在这种情况下,我如何传递表值参数

我明白了

Error无法从System.Data.SqlDbType转换为System.Data.DbType


如果无法将CommandParameter更改为SQLCommandParameter,则此转换错误是不可避免的。因此,您的意思是,进行批量插入的唯一方法是XML。如果您忽略了dbtype(SqlDbType.Structured),ADO.Net将推断正在使用的提供程序的类型。您可以尝试,如果数据库是MS SQL,那么它可能会工作。感谢您的评论,我已经更改了使用XML的代码,甚至更改了SP以接受XML,但我会尝试
DbCommand retcommmand;



var attachmentDetails = this.ConvertToDatatable<CurfewAttachmentDetails>(curfewRequestForSave.Attachment);
            List<CommandParameter> SqlparamUpdate = new List<CommandParameter>();
            // SqlparamUpdate.Add(new CommandParameter("@PI_CurfewRelaxationId", curfewRequestForSave.CurfewRelaxationId, ParameterDirection.Input, DbType.Int64));
            SqlparamUpdate.Add(new CommandParameter("@PI_CurfewRelaxationId", curfewRequestForSave.CurfewRelaxationId, ParameterDirection.Input, DbType.Int64));
            SqlparamUpdate.Add(new CommandParameter("@PI_CurfewRelaxationRequestId", "TODO Code For WorkFlow", ParameterDirection.Input, DbType.String));
            SqlparamUpdate.Add(new CommandParameter("@PI_CurfewRequestCode", String.Empty, ParameterDirection.Input, DbType.String));
            SqlparamUpdate.Add(new CommandParameter("@PI_StaffSeqId", curfewRequestForSave.StaffSeqId, ParameterDirection.Input, DbType.Int64));
            SqlparamUpdate.Add(new CommandParameter("@PI_RequestCategoryId", curfewRequestForSave.RequestCategoryId, ParameterDirection.Input, DbType.Int32));
            SqlparamUpdate.Add(new CommandParameter("@PI_RequestTypeId", curfewRequestForSave.RequestTypeId, ParameterDirection.Input, DbType.Int32));
            SqlparamUpdate.Add(new CommandParameter("@PI_Reason", curfewRequestForSave.Reason, ParameterDirection.Input, DbType.String));
            SqlparamUpdate.Add(new CommandParameter("@PI_PermissionRequiredFrom", curfewRequestForSave.PermissionRequiredFrom, ParameterDirection.Input, DbType.DateTime));
            SqlparamUpdate.Add(new CommandParameter("@PI_PermissionRequiredTill", curfewRequestForSave.PermissionRequiredTill, ParameterDirection.Input, DbType.DateTime));
            SqlparamUpdate.Add(new CommandParameter("@PI_RelationshipId", curfewRequestForSave.RelationshipId, ParameterDirection.Input, DbType.Int32));
            SqlparamUpdate.Add(new CommandParameter("@PI_Spouse_Blood_Name", curfewRequestForSave.Spouse_Blood_Name, ParameterDirection.Input, DbType.String));
            SqlparamUpdate.Add(new CommandParameter("@PI_ReturnDate", curfewRequestForSave.ReturnDate, ParameterDirection.Input, DbType.DateTime));
            SqlparamUpdate.Add(new CommandParameter("@PI_ShiftTimmingsFrom", curfewRequestForSave.ShiftTimmingsFrom, ParameterDirection.Input, DbType.DateTime));
            SqlparamUpdate.Add(new CommandParameter("@PI_ShiftTimmingsTo", curfewRequestForSave.ShiftTimmingsTo, ParameterDirection.Input, DbType.DateTime));
            SqlparamUpdate.Add(new CommandParameter("@PI_CreatedBy", curfewRequestForSave.StaffSeqId, ParameterDirection.Input, DbType.Int64));
            SqlparamUpdate.Add(new CommandParameter("@PI_UpdatedBy", curfewRequestForSave.StaffSeqId, ParameterDirection.Input, DbType.Int64));
            SqlparamUpdate.Add(new CommandParameter("@PI_CurfewRquestAttchMntDetails", attachmentDetails, ParameterDirection.Input,SqlDbType.Structured));
            SqlparamUpdate.Add(new CommandParameter("@PO_MESSAGE", "", ParameterDirection.Output, DbType.String, 500));
            SqlparamUpdate.Add(new CommandParameter("@PO_RETURN_CODE", 0, ParameterDirection.Output, DbType.Int32));

            retcommmand = _sqldbframework.ExecuteSPNonQueryParm("QAG_GEMS_CURFEW_REQUEST_SAVE_DETAILS_PROC", SqlparamUpdate);