【发布时间】:2014-07-08 10:18:10
【问题描述】:
我的 C# 代码:
var Message = new SqlParameter("Message", SqlDbType.VarChar, 8000);
Message.Direction = ParameterDirection.Output;
var UserId = new SqlParameter("UserId ", SqlDbType.BigInt);
UserId.Value = Convert.ToInt64(System.Web.HttpContext.Current.Session["UserIDKey"]);
var utblProgramAllotment = new SqlParameter("utblProgramAllotment", SqlDbType.Structured);
utblProgramAllotment.Value = dtProgrammeAllotments;
utblProgramAllotment.TypeName = "dbo.utblProgramAllotment";
try
{
db.Database.ExecuteSqlCommand(
"exec uspInsertUpdateProgrammeAllotment @UserId , @utblProgramAllotment, @Message OUTPUT",
UserId, utblProgramAllotment, Message);
}
catch (Exception ex)
{
vm.Message = ex.Message.ToString();
Errorlog.WriteErrorlog(ex, "Programme Allotment", "");
我的程序接受:
ALTER PROCEDURE [dbo].[uspInsertUpdateProgrammeAllotment]
(
@utblProgramAllotment AS utblProgramAllotment READONLY,
@UserId Bigint,
@Message VARCHAR(8000) OUTPUT
)
而用户定义的表类型是
CREATE TYPE [dbo].[utblProgramAllotment] AS TABLE(
[ProgrammeScheduleIDKey] [bigint] NOT NULL,
[ProposalDetailsIDKey] [bigint] NOT NULL,
[SanctionOrderIDKey] [bigint] NOT NULL,
[ProgrammeIDKey] [bigint] NOT NULL,
[EmployeeIDKey] [bigint] NOT NULL,
[DistrictIDKey] [bigint] NOT NULL,
[TargetGroupIDKey] [bigint] NOT NULL,
[ProgrammeTitleIDKey] [bigint] NOT NULL,
[ProgramMode] [varchar](3) NOT NULL,
[ProgrammeDescription] [varchar](500) NOT NULL,
[ScheduleStartDateDt] [datetime] NULL,
[ApprovalDt] [datetime] NOT NULL,
[ScheduleEndDateDt] [datetime] NULL,
[ProgrammeVenue] [varchar](250) NOT NULL,
[NoofParticipants] [bigint] NOT NULL,
[Remarks] [varchar](500) NOT NULL,
[AccountsRemarks] [varchar](250) NOT NULL,
[ExamDateDt] [datetime] NULL,
[ProgrammeTitle] [varchar](250) NOT NULL,
[DeletedFlg] [bit] NOT NULL
)
我正在将数据表发送到 sql 存储过程。 当我尝试从我的 c# 传递这个数据表时,它显示一个异常为 操作数类型冲突:int 与 utblProgramAllotment 不兼容,这是用户定义的表类型
【问题讨论】:
-
请努力使您的帖子格式更简洁。修复缩进,确保非代码不被视为代码。
-
这看起来像是一条 SQL Server 生成的错误消息。我认为解决这个问题的关键在于存储过程本身。可以发一下吗?