正确的方法将1设置为许多人,以便我可以在包含的表上查询具有实体框架6的属性



i当前设置了2个表。我可以轻松地包含关联的表,但我希望能够在Where子句中使用条件,并且不确定我需要在哪里更改它。关系是一个人可以拥有许多地址

    public partial class People
{
  public People()
    {
        Address = new HashSet<Address>();
    }
    public int Id { get; set; }
    public int Name { get; set; }
    public virtual ICollection<Address> Address { get; set; }
}
public partial class Address
{
    public int id { get; set; }
    public string State { get; set; }

    public int PeopleId { get; set; }
    public People People { get; set; }
}

我当前可以做到这一点,它包含关联的数据,但是返回的数据超出了我的需求。

 using (DBContextdb = new DBContext())
        {
            var oooo = db.People.IncludeOptimized(x => x.Address).ToListAsync();
        }

我想按照这些方式做一些事情,但是我需要正确建立关系。这实际上并不能让我在地址类中选择状态的属性。

 using (DBContext db = new DBContext())
        {
            var oooo = db.People.IncludeOptimized(x => x.Address).Where(x => x.Address.State == "Florida").ToListAsync();
        }

您无法访问'状态'属性,因为'x.Address'是一个集合。国家 - 特权也是Int类型的。但是您尝试将其与字符串"佛罗里达"进行比较。因此,您还应该改变这一点。因此,如果您需要具有"佛罗里达州"状态的所有地址,则可以使用类似的东西:

简化的模型类:

    public class Model1
    {
       public IQueryable<People> People { get; set; }
       public IQueryable<Address> Addresses { get; set; }
       public Model1()
       {
           People = new List<People>().AsQueryable() ;
           Addresses = new List<Address>().AsQueryable();
       }
   }

新地址/人类课程:

public partial class People
{
    public People()
    {
        Address = new HashSet<Address>();
    }
    public int Id { get; set; }
    public int Name { get; set; }
    public virtual ICollection<Address> Address { get; set; }
}
public partial class Address
{
    public int Id { get; set; }
    public string State { get; set; }

    public int PeopleId { get; set; }
    public People People { get; set; }
}

然后您可以使用以下代码:

Model1 model = new Model1();
var queryResult = model.Addresses.Where(a => a.State == "Florida");

编辑这是您要查找的查询:

IQueryable<People> queryResult = model.Addresses.Where(a => a.State == "Florida").Select(a => a.People);

最新更新