2013-07-28 2 views
2

В настоящее время я использую ASP.NET MVC4 и пытаюсь добавить новую запись в таблицу с Integer в качестве первичного ключа. Я знаю об ошибке идентификации и устанавливаю ее в true, я также знаю о GUID, но они используются для уникальных идентификаторов, а не целых чисел.Ошибка автоинкремента: колонку нельзя изменить. [Имя столбца = UserId]

Вот где я добавить новую строку, зная, что мой первичный ключ столбец с именем 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]

+0

Как выглядит модель «Лист» для столбца «SheetId»? –

+0

Вероятно, db.Sheets.Create() назначит значение SheetId, но база данных исключает пустое значение, поэтому его можно автогенерировать. –

+0

@Joachim Isaksson: Я добавил модель листа – Osama

ответ

1

Я решил вопрос лишь удалив мой файл EDMX-Context и воссоздал его снова и вуаля это сработало !! Спасибо также за ваши усилия. Ребята

0

Удалить [Обязательно] на ключ;

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

То же исключение все еще существует – Osama

+0

@Osama Какая версия SQL CE? –

1

Вы можете попробовать [DatabaseGenerated (DatabaseGeneratedOption.Identity)] на ключе, как это:

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

У меня была аналогичная проблема, и это сработало для меня. –

Смежные вопросы