2011-02-08 14 views
6

ho le seguenti due tabelle:Codice-Primo riferimento uno-a-molti

LOCALIZZAZIONE

Id      int 
Text     string 

DINER

Id      int 
Name     string 
Description   string 
Name_LocalizationID int 
Description_LocationID int 

Ora voglio che la mia POCO in questo modo:

public class Diner{ 
    public int Id{get;set;} 
    public ICollection<Localization> NameLocalization{get;set;} 
    public ICollection<Localization> DescriptionLocalization{get;set;} 
} 

public class Localization{ 
    public int Id{get;set;} 
    public string Text{get;set;} 
} 

La domanda è: come possiamo mappare Nam Proprietà eLocalization e DescriptionLocalization all'ID di localizzazione con EF Fluent API? Grazie

risposta

3

SQL Server non supporta cascata multipla elimina, quindi è necessario fare una delle tue associazioni opzionale al fine di ricavare uno schema di SQL Server dal modello a oggetti:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Diner>() 
     .HasRequired(diner => diner.NameLocalization) 
     .WithMany() 
     .IsIndependent() 
     .Map(s => 
     { 
      s.MapKey(localization => localization.Id, "NameLocalizationID"); 
     }); 

    modelBuilder.Entity<Diner>() 
     .HasOptional(diner => diner.DescriptionLocalization) 
     .WithMany() 
     .IsIndependent() 
     .Map(s => 
     { 
      s.MapKey(localization => localization.Id, "DescriptionLocationID"); 
     }); 
} 
0

Non ho provato questo codice, ho paura, ma forse qualcosa di simile:

modelBuilder.Entity<Diner>() 
    .HasRequired(diner => diner.NameLocalization) 
    .WithMany().IsIndependent() 
    .Map(s => { s.MapKey(localization => localization.Id, "Name_LocalizationID"); }); 

modelBuilder.Entity<Diner>() 
    .HasRequired(diner => diner.DescriptionLocalization) 
    .WithMany().IsIndependent() 
    .Map(s => { s.MapKey(localization => localization.Id, "Description_LocationID"); }); 
+0

mi dispiace ho dato navigazioni Diner sbagliate. quando ho eseguito il codice sopra riportato, ha restituito molti record, quindi penso di dover cambiare uno: uno a uno: molti mapping. Quindi la mia classe Diner sarà simile a questa: public class Diner { public int ID {get; set;} pubblico ICollection NameLocalization {get; set;} pubblico ICollection DescriptionLocalization {get; set; } } Potrebbe dirmi in che modo viene mappato utilizzando Fluent o Data Annotation? – sadhat75

Problemi correlati