编辑主键

use*_*472 3 c# asp.net asp.net-mvc-3

如果表只包含主键字段,是否有一种在MVC3中编辑主键的方法.例如,我有一个控制台表,在其中我有控制台名称作为主键,我希望能够编辑它并更改它并保存编辑的值.

如果您需要更多信息,请告诉我.

mgn*_*nan 6

作为一般规则,您不应该编辑主键.SQL Server中的主键通常在其上具有聚簇唯一索引,因此编辑主键意味着您可能必须重建索引(可能不是每次都有,但取决于偏差).

相反,我会创建一个假主键,例如SQL Server中的IDENTITY列,并在Name列上放置一个UNIQUE约束.如果表变大,则检索int列上的项也将比在varchar()列上检索更快.

更新: 因为我被告知我没有回答问题(即使这是接受的答案),可以更改SQL Server中的主键值.但从技术上讲,它不是编辑操作,因为参照完整性可能会阻止真正的编辑(我没有尝试过,所以请随意进行自己的实验!)

操作将是这样的:

  1. 使用新的PK值将新行添加到主表
  2. 运行更新操作以将所有FK值更改为新的PK值
  3. 删除旧的PK行

我也会在交易中运行所有这些.但我会再次声明记录,我不建议采用这种方法.