我有一个问题,使用实体框架更新'Card_Id'主键,但同样的事情适用于简单的sqlcommand .

我的db表是:

create table Bank_Detail(Card_Id bigint not null主键,Card_Type nvarchar(60)not null,Cvv bigint not null,UserName nvarchar(80),Months int not null,Years int not null,BankName_ID int not null foreign key(BankName_ID)references Bank_Name(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'是对象关键信息的一部分,无法修改 . ”

Bank_Detail customerRow = Grid1.SelectedItem as Bank_Detail;

 Bank_Detail bankdetail = bct.Bank_Detail.Single(b => b.Card_Id == Old_ID);
            bankdetail.Card_Id = customerRow.Card_Id;
            bankdetail.Cvv = customerRow.Cvv;
            bankdetail.UserName = customerRow.UserName;
            bankdetail.Months = customerRow.Months;
            bankdetail.Years = customerRow.Years;
            bct.SaveChanges();            
            errormessage.Text = "item Updated successfully";

Note: 请不要混淆Old_ID . 用于存储我以前的Card_Id的全局变量:public long? Old_ID;

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

    }

Please Provide the solution If you have any other way to update the same key using Entity Framework