2014-01-29 76 views
0

使用實體框架代碼優先假設我有類:實體framwork(代碼優先)多到許多LINQ查詢形成

class Person 
{ 
    public Person() 
    { 
     Houses = new List<House>(); 
    } 
    public Guid PersonId { get; set; } 
    public string Name { get; set; } 

    public virtual List<House> Houses { get; set; } 
} 

public House 
{ 
    public Guid HouseId { get; set; } 
    public string Address { get; set; } 
} 

我然後創建其中僅一個實體被暴露的上下文。然後我將它們映射成多對多的關係。

public class PersonContext : DbContext 
{ 
    public DbSet<Person> People { get; set; } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Person>() 
     .HasMany(p => p.Houses) 
     .WithMany() 
     .Map(m => 
     { 
      m.ToTable("PeopleHouses"); 
      m.MapLeftKey("PersonId"); 
      m.MapRightKey("HouseId"); 
     } 
    } 
} 

當運行實體框架創建連接表。

我的問題是如何創建一個LINQ查詢來檢索屬於一個人的房屋? (使用PersonId)

回答

3

我沒有看到你的問題...有一個導航屬性。

var houses = People.First(n => /* select your person */).Houses; 
0
var houses = Peoples.Where(p => p.PersonId == YourPersonIdHere).Select(p => p.Houses); 
相關問題