自动增量问题:无法修改列。 [列名= UserId]

时间:2013-07-28 08:22:33

标签: c# sql asp.net-mvc-4 sql-server-ce auto-increment

我目前正在使用ASP.NET MVC4并尝试将新条目添加到以Integer为主键的表中。我知道身份问题并将其设置为true,我也知道GUID但它们用于唯一标识符而不是整数。

这是我添加新行的地方,因为我知道我的主键是名为SheetId

的列
if (ModelState.IsValid)
{
   var sheet = db.Sheets.Create();
   sheet.Email = Request.Cookies["UserInfo"]["Email"];
   sheet.ApprovedDays = "0000000";
   sheet.DateStarted = DateTime.Now;

   db.Sheets.Add(sheet);

   db.SaveChanges();

   return RedirectToAction("Index", "Home");
}

这是图纸模型

public class Sheet
{
    [Key]
    [Required]
    public int SheetId { get; set; }
    [Required]
    public DateTime StartDate { get; set; }
    [Required]
    public string Email { get; set; }
    public string ApprovedDays { get; set; }
    //
    public virtual UserModel UserModel { get; set; }
    public virtual ICollection<Task> Task { get; set; }
}

这是我得到的例外

  

异常详细信息:System.Data.SqlServerCe.SqlCeException:无法修改列。 [列名= SheetId]

3 个答案:

答案 0 :(得分:1)

您可以在密钥上尝试[DatabaseGenerated(DatabaseGeneratedOption.Identity)],如下所示:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SheetId { get; set; }

答案 1 :(得分:1)

我通过仅删除我的.EDMX上下文文件并重新重新创建它来解决问题,并且它有效! 还要感谢您的努力人员

答案 2 :(得分:0)

删除密钥上的[必需];

[Key]
public int SheetId { get; set; }