[英]Entity Framework: Cannot insert explicit value for identity column in table '[table]' when IDENTITY_INSERT is set to OFF
[英]Cannot insert explicit value for identity column when IDENTITY_INSERT is set to OFF
我正在嘗試設置一個復合主鍵,第二個鍵是年份。
我已經在表創建和構造函數中設置了自動生成字段,但我仍然收到此錯誤:
當IDENTITY_INSERT設置為OFF時,無法在表Volunteer中為標識列插入顯式值。
代碼和設置的所有三個部分都在下面。
[Table("Volunteer")]
public class Volunteer
{
[Key][Column(Order = 0)]
public int Id { get; set; }
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("Team Mentored")]
public string TeamMentored { get; set; }
[Key][Column(Order = 1)] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public DateTime Year { get; set; }
public string TableNumber { get; set; }
public int OfficeId { get; set; }
public string Image { get; set; }
}
CREATE TABLE [dbo].[Volunteer](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](255) NULL,
[LastName] [nvarchar](255) NULL,
[TeamMentored] [nvarchar](255) NULL,
[Year] [date] DEFAULT(getdate()) NOT NULL,
[TableNumber] [nvarchar](50) NULL,
[OfficeId] [int] NOT NULL,
[Image] [nvarchar](max) NULL
)
public ActionResult Create([Bind(Include = "FirstName,LastName,TeamMentored,TableNumber,OfficeId,Image")] Volunteer volunteer)
{
try
{
if (ModelState.IsValid)
{
db.Volunteers.Add(volunteer);
db.SaveChanges();
ModelState.Clear();
}
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
ModelState.AddModelError("", "DB Update Failed!");
}
return View();
}
嘗試在“Id”屬性上使用屬性[DatabaseGenerated(DatabaseGeneratedOption.Identity)]。 如果不這樣做,是否可以發布分配代碼並保存?
您的屬性[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
告訴實體框架(和SQL Server)該屬性將由數據庫使用自動遞增值自動生成。 因此,您無法為其提供值。
如果它可以工作,你將不得不將它移動到Id
屬性。 它可能會工作,但我不能肯定,因為我之前沒有使用過復合鍵。
如果仍然出現錯誤,那么這是因為已創建數據庫時將Year
列設置為int identity(1,1)
。 手動編輯數據庫,或刪除它並使用新的遷移重新創建它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.