2011-02-15 6 views

Respuesta

25

Si usted está construyendo sus entidades utilizando la interfaz fluida en lugar de utilizar atributos sobre las propiedades, es posible que pueda utilizar la clase DatabaseGenerationOption (de EntityFramework.dll, en el espacio de nombres System.ComponentModel.DataAnnotations). No lo he probado, pero así es como se vería:

modelBuilder 
    .Entity<Foo>() 
    .Property(f => f.Id) 
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
+0

odiaba esta elección API, por lo que escribió estos métodos de extensión en PrimitivePropertyConfiguration .Identity (isIdentity: falso), y .Computed() –

41

Esa respuesta no funcionó para mí (en EF 4.1).

para hacer este trabajo, he añadido atributo DatabaseGenerated a mi columna de clave:

public class FacebookUser 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public long FacebookId { get; set; } 

    // ... 
} 

Espero que esto ayude a alguien.

+0

Gracias, funcionó para mí. – Nestor

+0

Funcionó como un regalo, y tenía la ventaja de que la declaración del esquema se mantenía dentro de la declaración de clase, en lugar de moverse en algún lugar del método genérico de compilación. Haciéndolo más reconocible en mi humilde opinión. – Amadiere

+0

No estoy seguro de por qué funcionó, pero la respuesta API fluida de @MattHamilton no lo hizo, pero lo hizo. Gracias :) – jwatts1980

8

pequeño cambio

public class User 
{ 

    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 

    public int ID { get; set; } 

    // Rest of the code 
} 
Cuestiones relacionadas