Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 财产';卡号';是对象的一部分';s键信息,无法修改。有人能告诉我为什么EF会这样吗_C#_.net_Entity Framework_Ado.net_Sql Server 2012 - Fatal编程技术网

C# 财产';卡号';是对象的一部分';s键信息,无法修改。有人能告诉我为什么EF会这样吗

C# 财产';卡号';是对象的一部分';s键信息,无法修改。有人能告诉我为什么EF会这样吗,c#,.net,entity-framework,ado.net,sql-server-2012,C#,.net,Entity Framework,Ado.net,Sql Server 2012,我在使用实体框架更新“Card_Id”主键时遇到了一个问题,但对于简单的sqlcommand,同样的问题也可以很好地解决 我的数据库表是: 创建表Bank\ U Detail(卡Id bigint not null主键,卡类型nvarchar(60)not null,Cvv bigint not null,用户名nvarchar(80),月份int not null,年份int not null,银行名称int not null外键(银行名称\U Id)引用银行名称(Id)) 当我使用此代码更新

我在使用实体框架更新“Card_Id”主键时遇到了一个问题,但对于简单的sqlcommand,同样的问题也可以很好地解决

我的数据库表是:

创建表Bank\ U Detail(卡Id bigint not null主键,卡类型nvarchar(60)not null,Cvv bigint not null,用户名nvarchar(80),月份int not null,年份int not null,银行名称int not null外键(银行名称\U Id)引用银行名称(Id))

当我使用此代码更新信息时,它可以很好地升级“Card_Id”,这是我数据库上的主键

          using (SqlConnection con = new SqlConnection(CS))
          {
              SqlCommand cmd =
              new SqlCommand("update Bank_Detail Set Cvv=@Cvv , Card_Id =@New_ID ,UserName=@Name,Months=@ExM,Years=@ExY where Card_Id = @Old_ID", con);

              cmd.Parameters.AddWithValue("@Old_ID", Old_ID);
              cmd.Parameters.AddWithValue("@New_ID", New_ID);
              cmd.Parameters.AddWithValue("@Cvv", Cvv);
              cmd.Parameters.AddWithValue("@Name", Name);
              cmd.Parameters.AddWithValue("@ExM", ExM);
              cmd.Parameters.AddWithValue("@ExY", ExY);
              con.Open();
              int val = cmd.ExecuteNonQuery();
              errormessage.Text = "item Updated successfully";

           }
但是如果我使用实体框架而不是简单的sqlcommand,那么它在升级“Card_Id”时会抛出异常

它说:“属性‘Card_Id’是对象关键信息的一部分,不能修改。”

注意: 请不要与旧的\u ID混淆。它是用于存储我以前的卡\u ID的全局变量: 公众长?旧身份证

  private void SeIndexChanged(object sender, SelectionChangedEventArgs e)
    {
        Bank_Detail customerRow = Grid1.SelectedItem as Bank_Detail;
        if (customerRow != null)
        {
            Old_ID = customerRow.Card_Id;
        }

    }

如果您有任何其他方法使用Entity Framework更新同一密钥,请提供解决方案

您想知道EF为什么这样做,还是想为代码中的限制找到合适的解决方法?是的。实际上,我也想用EF实现同样的功能,请帮助我了解为什么EF代码会显示此异常?
  private void SeIndexChanged(object sender, SelectionChangedEventArgs e)
    {
        Bank_Detail customerRow = Grid1.SelectedItem as Bank_Detail;
        if (customerRow != null)
        {
            Old_ID = customerRow.Card_Id;
        }

    }