So markieren Sie die identity-Spalte ordentlich mit Entity Framework 6.1?

Ich habe viele Beiträge und Antworten zu so markieren Sie einen Bereich, wie die identity-Spalte. Viele von Ihnen sind veraltet und Zielen auf ältere Versionen von Entity Framework.

Einige Ressourcen, die mir sagen, dass ich ein Attribut auf dem Feld:

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

Andere Ressourcen, die mir sagen, ich fügen Sie diesen code OnModelCreating Methode:

modelBuilder.Entity<User>().Property(u => u.ID).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);

Welche soll ich verwenden? Erster, zweiter, beide, spielt keine Rolle, oder etwas anderes?

  • Entweder, Sie Ihre Wahl. Ich benutze eine Mischung aus den beiden: Attribute für einfache Dinge wie diese, und die modelBuilder für komplexere Szenarien die Attribute nicht decken. Sie sind beide gleichermaßen gültig, und Sie werden sehen, dass unter der Decke (EF 'Konventionen'), die Attribute werden verwendet, um zu sagen, die modelBuilder was zu tun ist.
  • danke. Ich denke, ich werde den Attribut-Ansatz, wie es führt zu saubereren code. Könntest du bitte posten Sie Ihren Kommentar als eine Antwort, so kann ich es akzeptieren?
  • Ist diese Eigenschaft ein primary key?
  • ja. Ich habe auch die Key Attribut (ich don ' T glaube, ich brauche es sowieso, wie der name der Eigenschaft ist ID)
  • Sie brauchen nicht thoses Konfigurationen, weil ID ist primary key und numerischen Typ. Unten meine Antwort.
Schreibe einen Kommentar