1

Für EF 6.1 und höher, wenn ich hinzufüge/Reverse Engineering-Entity-Modell Modell/Code-Generierung in VS15 & SQL-Server 2k16 Datenbank meine Einheiten fehlen beide Id, und automatisches Inkrementieren von Datenanmerkungen. Saw this und this Frage zu SO, aber keine Antworten, nur dass es ein Bug ist, suche ich eine Option, um den PK Key, Auto Increment zu generieren.EF Datenbank erste Codegenerierung fehlt Key und Datenaufbelichtung

Frage: Wie kann ich sicherstellen, dass die ID-Schlüssel & Auto-Erhöhungs-Optionen für die Einheiten hinzugefügt werdenbei der Codegenerierung? Es gibt keine Datenanmerkungen außer auf den Fremdschlüsseln! Kann ich EF auch dazu bringen, zusammengesetzte Schlüssel zu generieren?

Was ich tat: In der Datenbank hinzugefügt ich den Set Primärschlüssel auf dem [Id] col als int, Ich habe auch Identity true, seed 1, auto increment 1

Z.B. fehlende Primärschlüssel


//E.g. Reverse Eng. Generated code from ASP table 
public partial class AspNetUsers 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public AspNetUsers() 
    { 
     this.AspNetUserClaims = new HashSet<AspNetUserClaims>(); 
     this.AspNetUserLogins = new HashSet<AspNetUserLogins>(); 
     this.AspNetRoles = new HashSet<AspNetRoles>(); 
    } 
    // Missing Primary Key 
    public string Id { get; set; } 
    public Nullable<int> IdNumber { get; set; } ... 

Z.B. 2 Fehlende beide Primärschlüssel & Autoinkrement

public partial class AuditNetEvent 
{ 
    //Reverse Generated code missing Primary Key & Auto Increment 
    public bigint Id { get; set; } 
    public System.DateTime InsertedDate { get; set; } 
+1

Wenn ich Reverse Engineering meine Datenbank in Code erste Klassen, es schafft die POCO-Klassen ohne Anmerkungen und einem Modellklasse mit dem Kontext, dbsets und fließendem Code (OnModelCreating), um die Schlüssel, Beziehungen usw. für alle ausgewählten Tabellen zu definieren. –

+0

@SteveGreene wenn ich richtig verstehe, ist dies Standardverhalten, richtig? Ich habe den 'DbMode.Context' eingecheckt, er erstellt die Sätze in Ordnung, aber keine Schlüssel 'protected override void OnModelCreating (DbModelBuilder modelBuilder) { neue UnintentionalCodeFirstException() werfen; } '- Wie bekomme ich es da drin? – transformer

+0

Ich habe die [Code Generation Templates] (https://www.nuget.org/packages/EntityFramework.CodeTemplates.CSharp/) wie beschrieben [hier] (https://entityframework.codeplex.com/workitem/2241) optimiert . –

Antwort

1

Es scheint, dass das Werkzeug nicht Anmerkungen hinzufügt, wenn die Standard-Konventionen sie überflüssig machen. Für eine Id Spalte ist der Standardwert, dass es PK und Identität ist. Ich habe versucht, mit einer Tabelle, die die Konventionen nicht passend (abweichenden PK Spaltennamen und keine Identität) und die Anmerkungen wurden hinzugefügt:

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

ohh toll, :) nach all dem sucht es Weichen Konvention über Konfiguration! Ich schätze, ich sollte froh sein. Ich denke, "Id" macht Sinn als eine PK-ID, aber alle ID-Spalten kommen standardmäßig mit '[DatabaseGenerated (DatabaseGeneratedOption.None)]' Danke. wird dich als Antwort markieren! – transformer

Verwandte Themen