Ausgabe
Ich versuche, einen zusammengesetzten Primärschlüssel einzurichten, wobei der zweite Schlüssel das Jahr ist.
Ich habe sowohl in der Tabellenerstellung als auch im Konstruktor so eingestellt, dass das Feld automatisch generiert wird, aber ich erhalte immer noch diesen Fehler:
Es kann kein expliziter Wert für die Identitätsspalte in Tabelle Volunteer eingefügt werden, wenn IDENTITY_INSERT auf OFF gesetzt ist.
Alle drei Teile des Codes und der Einrichtung sind unten aufgeführt.
[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();
}
Lösung
Versuchen Sie, das Attribut [DatabaseGenerated(DatabaseGeneratedOption.Identity)] für die Eigenschaft „Id“ zu verwenden. Wenn das nicht geht, ist es möglich, den Zuordnungscode zu posten und zu speichern?
Beantwortet von – llouk
Antwort geprüft von – Senaida (FixError Volunteer)