2013-02-12 20 views
7

Sto utilizzando EF5 e Code First per creare il database. Quando Entity ha Id field, EF crea tale campo come Primary Key nel database e imposta su true (valore generato automaticamente). Come impostare Identity specification to false by default?Specificazione identità impostata su false

risposta

19

Se non si desidera utilizzare le chiavi di identità sono disponibili diverse opzioni.

Opzione 1: È possibile attivare globalmente off questa funzione rimuovendo StoreGeneratedIdentityKeyConvention:

public class YourContext : DbContext { 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
     modelBuilder.Conventions.Remove<StoreGeneratedIdentityKeyConvention>(); 
    } 
} 

È possibile selezionare selettivamente tasti e modificare il comportamento per loro da entrambi gli attributi applicare o mappatura fluente.

Opzione 2: Abilità:

public class MyEntity { 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int Id { get; set; }   
} 

Opzione 3: API Ottima:

public class YourContext : DbContext { 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
     modelBuilder.Entity<MyEntity>() 
        .Property(e => e.Id) 
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
    } 
} 
Problemi correlati