Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изразя a has many чрез връзка в Entity Framework 5?

Имате един тип данни, който наричате отделни имена. Това е малко объркващо. Въпреки това, за да накарате това да работи първо с кода, трябва само следната плавна конфигурация във вашия клас Custom DbContext:

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");
       });
}

Това, ако приемем, че вашият потребителски клас изглежда така:

[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; }
}

Ако използвате горния метод, всеки потребителски обект, който имате, ще има свойство за навигация на него се наричат ​​приятели. Когато отправяте заявки за потребители, ще искате да нетърпеливо зареждате приятели на потребители , направете:

context.users.Include("Buddies")

Освен това, за да разрешите проблема си с множество читатели. Това е, защото не сте изброили заявката (db.users) от първия си цикъл. За да се справите с това, можете да изброите заявката по следния начин:

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

И ако използвате конфигурацията по-горе, не е нужно да се опитвате да съпоставите идентификационните номера, вие просто получавате списъка (нулево поле, ако е ново) с приятели от потребителя, използвайки свойството за навигация на приятели (виртуално, мързеливо заредено), направете:

user.Buddies

Както можете да видите, всъщност не се нуждаете от 'Model.buddy' (тъй като съдържа само идентификационно съпоставяне) Entity Framework ще се погрижи за свързването. Ако обаче не винаги включвате приятелите във вашата потребителска заявка, може да искате таблицата. Което ще бъде запитано с LINQ по следния начин:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с Varchar на Mysql 2147483647

  2. Използвайки MySql, мога ли да сортирам колона, но 0 да е последна?

  3. Създаване на свързани или подобни публикации с помощта на PHP и MySQL

  4. Функция MySQL ROUND() – Закръгляйте число до даден брой десетични знаци

  5. Не може да се свърже отдалечено с инсталацията на EC2 MySQL