Respuesta

10

Sí, debe asignar su propiedad clave. Supongamos que usted tiene una entidad como:

public class MyEntity 
{ 
    public virtual Guid Key { get; set; } 
    ... 
} 

Entonces se puede definir DbContext clase derivada como:

public class Context : DbContext 
{ 
    public DbSet<MyEntity> MyEntities { get; private set; } 

    public Context() 
     : base("connection") 
    { 
     MyEntities = Set<MyEntity>(); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<MyEntity>().HasKey(e => e.Key); 
     modelBuilder.Entity<MyEntity>() 
        .Property(e => e.Key) 
        .HasDatabaseGeneratedOption(DatabaseGenerationOption.Identity); 

     // Other mapping 
    } 
} 

o simplemente puede definir su entidad con anotaciones de datos:

public class MyEntity 
{ 
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public virtual Guid Key { get; set; } 
    ... 
} 

Editar:

Esto funciona si la asignación se usa con la base de datos existente, pero si quiere que EF code-first cree una base de datos para usted, usará las guías normales (no secuenciales). Check this question para posibles soluciones en caso de generación de la base de datos.

Cuestiones relacionadas