Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t通过向存储过程传递参数来更新外键_C#_Asp.net_Foreign Keys - Fatal编程技术网

C# Can';t通过向存储过程传递参数来更新外键

C# Can';t通过向存储过程传递参数来更新外键,c#,asp.net,foreign-keys,C#,Asp.net,Foreign Keys,我有一个更改表中字段的应用程序。这是一个简单的表单,用户可以在其中更改与组关联的公司 .NET public static string EditGroup(vw_Group_Model editGroup) { string outcome = ""; if (editGroup.RowType == "ALF") { try {

我有一个更改表中字段的应用程序。这是一个简单的表单,用户可以在其中更改与组关联的公司

.NET

 public static string EditGroup(vw_Group_Model editGroup)
        {
            string outcome = "";
            if (editGroup.RowType == "ALF")
            {
                try
                {

                    using (SqlConnection conn = AlfOnlineConnection())
                    {
                        conn.Open();
                        UserManager.Models.vw_Group_Model model = new vw_Group_Model();
                        using (var command = new SqlCommand("sp_UserManager_EditGroup", conn))
                        {
                            command.CommandType = CommandType.StoredProcedure;
                            command.Parameters.Add("@CompanyId", SqlDbType.Int).SqlValue = editGroup.companyId;
                            command.Parameters.Add("@GroupId", SqlDbType.Int).SqlValue = editGroup.groupId;
                            //command.Parameters.Add("@CompanyName", SqlDbType.NVarChar).SqlValue = editGroup.selected_company;
                            //command.Parameters.Add("@GroupName", SqlDbType.NVarChar).SqlValue = editGroup.groupName;
                            command.Parameters.Add("@StartDate", SqlDbType.DateTime).SqlValue = editGroup.StartDate;
                            command.Parameters.Add("@EndDate", SqlDbType.DateTime).SqlValue = editGroup.EndDate;

                            switch (editGroup.IsActive)
                            {
                                case true:
                                    command.Parameters.Add("@isactive", SqlDbType.TinyInt).SqlValue = 1;
                                    break;
                                case false:
                                    command.Parameters.Add("@isactive", SqlDbType.TinyInt).SqlValue = 0;
                                    break;
                            }

                            int rowsEdited = command.ExecuteNonQuery();

                            if (rowsEdited == 1)
                            {
                                outcome = "Row successfully edited.";
                            }
                        }
                    }
                }
                catch (SqlException ex)
                {
                    return ex.ToString();
                }
            }
T-SQL

USE [BradOnline]
GO
/****** Object:  StoredProcedure [dbo].[sp_UserManager_EditGroup]    Script Date: 01/17/2013 13:11:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO


ALTER PROCEDURE [dbo].[sp_UserManager_EditGroup] 
@GroupId INT, 
@CompanyId INT,
                                                 --@GroupName   NVARCHAR(50), 
                                                 --@CompanyName   NVARCHAR(50), 
                                                 @StartDate  DATETIME,
                                                 @EndDate  DATETIME,
                                                 @isactive TINYINT

AS 
  BEGIN 


  DECLARE @AccountManagerId uniqueidentifier
  SET @AccountManagerId = '7A1DC75D-2628-4F8D-A376-9382A0762568'
  --(SELECT G.AccountManagerId FROM dbo.aspnet_Custom_Groups AS G
        --                  WHERE Id = @GroupId)


  --DECLARE @CompanyId BIGINT
  --SET @CompanyId = (SELECT MAX(c.Id) FROM dbo.aspnet_Custom_Companies AS c
        --                  WHERE c.Name = @CompanyName)



  UPDATE 
    [dbo].[aspnet_Custom_Groups]
SET 
    --[Name] = @GroupName,
    [StartDate] = @StartDate,
    [EndDate] = @EndDate,
    [IsActive] = @isactive,
    [AccountManagerId] = NULL,
    [CompanyId] = @CompanyId
WHERE 
    [Id] = @GroupId
  END  

在SQL中,如果我硬编码更新的值,它就会工作,但如果我在其中传递值,它就不会工作。我已经看了很久了,但什么也没看到。当我使用断点检查时,应用程序中的参数包含值,而不是通过
SqlParameter.SqlValue
设置参数值,请尝试使用
SqlParameter.Value
如下所示

command.Parameters.Add("@CompanyId", SqlDbType.Int).Value = editGroup.companyId;

是否出现了特定的错误…?是否尝试从本机查询分析器调用存储过程?如果它是这样工作的,那么问题就出在你的.NET代码中,否则问题就出在SP中——试图缩小范围problem@HmxaMughal它没有给我一个错误。我检查了数据,公司ID的行没有改变。例如,如果我更改IsActive,它会工作。@ShaiAharoni它会编译。代码运行后,我就有了一个网格,可以使用ajax查询按名称进行过滤。在aspnet\u Custom\u Groups表上有任何触发器吗