2011-01-05 10 views
5

Ricevo un valore ModelValidationException (nella parte inferiore) quando si lavora con "Codice EF First". Mi vuole definire una chiave, ma non sono sicuro di cosa esattamente significhi ...Come si definiscono i tasti quando si lavora con "Codice EF prima"?

public class Unit 
{ 
    Guid id; 
    String public_id; 
    String name;   
    bool deleted; 
} 

public class MyDataContext : DbContext 
{ 
    public DbSet<Unit> Units { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Unit>().ToTable("sometable"); 
    } 
} 

[TestFixture] 
public class DataTests 
{ 
    [Test] 
    public void Test() 
    { 
     MyDataContext database = new MyDataContext(); 
     var o = database.Units; 


     Console.WriteLine(o.Count()); // This line throws! 
     Assert.IsTrue(true); 
    } 
} 

System.Data.Entity.ModelConfiguration.ModelValidationException: sono stati rilevati uno o più errori di convalida durante la generazione del modello:

System.Data.EdmEntityType:: EntityType 'Unit' non ha alcuna chiave definita. Definire la chiave per questo EntityType.

System.Data.Edm.EdmEntitySet: EntityType: EntitySet Unità è basata su tipo Unità senza chiavi definite.

risposta

3

È necessario utilizzare le proprietà, non le variabili locali private per tutti i campi per i quali EF deve creare campi di database.

Id di guida pubblica {get; set;}

8

Fai le tue proprietà campi e quindi utilizzare l'attributo [Key] in questo modo:

[Key] 
public Guid MyId { get; set; } 

Si dovrà fare riferimento e System.ComponentModel.DataAnnotations importazione per ottenere il KeyAttribute. More info can be found here.

+1

EF classificherà automaticamente le proprietà con il suffisso "Id" (si noti la "d" minuscola) come chiavi. È meglio seguire la convenzione anziché attribuire manualmente i campi come chiavi. – Charlie

0

Senza utilizzare [Chiave] se si utilizza il nome della colonna come Public Guid UnitID {get; impostato; } quindi EF considera questa colonna come colonna chiave.

Problemi correlati