0

Mein Modell sieht wie folgt vor:Bei der Verwendung von Verbundschlüssel: Kann nicht expliziten Wert für Identitätsspalte in Tabelle einfügen ‚‘, wenn IDENTITY_INSERT gesetzt ist auf OFF

public class AliveCheckedRealestate 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [Key, Column(Order = 0)] 
    public int RealestateId { get; set; } 

    [Key, Column(Order = 1)] 
    [ForeignKey("Job")] 
    public int JobId { get; set; } 


    public virtual AliveCheckJob Job { get; set; } 
} 

Jedes Mal, wenn ich einen neuen AliveCheckedRealestate dem Kontext füge ich das tun folgende:

job.AliveCheckedRealestates.Add(new AliveCheckedRealestate(){RealestateId = 33}); 

(Job ein bereits existierender Job in der Datenbank)

Allerdings hat ich jedes Mal versuchen, die Änderungen zu speichern (das heißt, die neue AliveCheckedRealestate), I erhalten die folgende Ausnahme:

Kann nicht expliziten Wert für Identitätsspalte in Tabelle einfügen ‚AliveCheckedRealestates‘ wenn IDENTITY_INSERT auf OFF gesetzt ist.

Was könnte das Problem hier sein? RealestateId ist ein eindeutiger Integer, den ich manuell gesetzt habe (es ist kein Fremdschlüssel) und ich setze es.

+0

Ist RealestateId noch als Identität in SQL Server markiert? Dies könnte passieren, wenn Sie DatabaseGeneratedOption.None hinzugefügt haben, nachdem die Datenbank bereits erstellt wurde. –

Antwort

0

Sie werden die folgenden SQL-Befehl für die Tabelle haben auszuführen:

SET IDENTITY_INSERT Table_Name ON;

Ich weiß nicht von irgendeiner Art und Weise eingebauten EF zu sagen setzen Identität einzufügen auf, soweit ich die einzige Art und Weise kennen, ist es mit SQL zu tun.

HINWEIS: keine gute Praxis, nicht zu beraten. Sie können sehr wohl doppelte Werte haben, also lassen Sie die Identity-Spalte die Werte für Sie generieren. Wenn Sie die Werte selbst einfügen möchten, machen Sie sie nicht zu einer Identitätsspalte.

+0

Vielen Dank für Ihre Erklärung. Ich habe am Ende eine reguläre Id-Schlüsselspalte erstellt, die gut funktioniert. –

Verwandte Themen