2014-01-29 72 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); 
相关问题