sql >> Database teknologi >  >> RDS >> Mysql

Hvordan udtrykker jeg en har mange gennem forhold i Entity Framework 5?

Du har én datatype, som du kalder separate navne. Det er lidt forvirrende. For at få dette til at fungere med kode først skal du blot bruge følgende flydende konfiguration i din Custom DbContext-klasse:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<user>().
      HasMany(c => c.Buddies).
      WithMany().
      Map(
       m =>
       {
          m.MapLeftKey("user_id");
          m.MapRightKey("buddy_id");
          m.ToTable("buddies");
       });
}

Dette forudsat at din brugerklasse ser sådan ud:

[Table("user")]
public class user
{
    public int id { get; set; }
    public string name { get; set; }
    public string email { get; set; }
    public virtual List<user> Buddies { get; set; }
}

Hvis du bruger metoden ovenfor, vil hvert brugerobjekt, du har, have en navigationsegenskab på det kaldet Buddies. Når du forespørger efter brugere, vil du gerne ivrige indlæse venner , gør:

context.users.Include("Buddies")

Yderligere, for at løse dit problem med flere læsere. Det er fordi du ikke har opregnet forespørgslen (db.users) fra din første løkke. For at adressere det kan du opregne forespørgslen sådan:

var users = context.users.Include("Buddies").ToList();
foreach(var user in users)....

Og hvis du bruger konfigurationen ovenfor, behøver du ikke at prøve at matche id'er, du anskaffer blot listen (null felt, hvis ny) over venner fra brugeren ved hjælp af buddies navigationsegenskaben (virtuel, doven indlæst), gør:

user.Buddies

Som du kan se, har du ikke rigtig brug for en 'Model.buddy' (da den kun indeholder en id-mapping) Entity framework vil tage sig af linkningen. Men hvis du ikke altid inkluderer vennerne i din brugerforespørgsel, vil du måske have tabellen. Hvilket ville blive forespurgt med LINQ på følgende måde:

var userBuddies = db.buddies.Where(buddy=>buddy.user_id == user.id).ToList();
//An enumerated list of user buddies 
//do stuff



  1. MySQL binær lagring ved hjælp af BLOB VS OS filsystem:store filer, store mængder, store problemer

  2. MySQL i skyen - fordele og ulemper ved Amazon RDS

  3. MYSQL-deklarerende variabler

  4. TypeORM underforespørgsler