2012-12-19 145 views
1

我有include方法,方案给出与实体框架包括方法

表仓库中的列

  1. ID发布 - >唯一标识符和PK
  2. warehouseNumber - 为nvarchar(50)

- 有些更列

表WarehouselnkedEcorders

  1. 标识 - > PK,独特的标识符
  2. warehouseUniqueId - >(FK,唯一标识符),它与 “仓库” 表ID列
  3. 状态

仓库模型关系有下面的代码

public class Warehouse 
{ 
    public Warehouse() 
    { 
     this.WarehouselnkedEcorders = new List<WarehouselnkedEcorder>(); 
    } 
    //Some stuff 

    public virtual ICollection<WarehouselnkedEcorder> WarehouselnkedEcorders 
    { get; set; } 
} 

WarehouselnkedEcOrdeMap有以下代码

 // Relationships 
     this.HasOptional(t => t.Warehouse) 
      .WithMany(t => t.WarehouselnkedEcorders) 
      .HasForeignKey(d => d.warehouseUniqueId); 

查询

我需要以检索仓库实体与状态列表=真。我尝试了以下方法,但无法获得结果。我怎样才能做到这一点?

List<Warehouse> lstObjWarehouse = objWMSContext.Warehouses.Include("WarehouselnkedEcorders").Where(//o=>SomeCondition) 
                 .Where(o => SomeCondition) 
                 .Where(o => o.Deleted == false).ToList(); 

在这里,我需要比较的状态值=“WarehouselnkedEcorder”的每一行的真实,它应该返回结果。

+2

多少了'Warehouse'的相关'WarehouselnkedEcorder's必须有一个真正的'Status'将'Warehouse'包含在结果集中? –

+0

您是否尝试过''WarehouselnkedEcorders“'而不是''WarehouselnkedEcorder”'? – lante

+0

@lante:我已经包含“WarehouselnkedEcorders”。 – mastan

回答

1

使用任意查询:

List<Warehouse> lstObjWarehouse = db.Warehouses.Include("WarehouselnkedEcorder") 
.Where(o => o.invoicePath == "SomeCondition" 
&& o.Deleted == false 
&& o.WarehouselnkedEcorders.Any(p => p.id == o.id 
&& p.Deleted == false)).ToList(); 
+0

它通过将导航属性名更改为“WarehouselnkedEcorders” – mastan

0

固定搭配1:许多条件

List<Warehouse> lstObjWarehouse = objWMSContext.Warehouses.Include("WarehouselnkedEcorder") 
        .Where(o => o.somefield == "SomeCondition" 
        &&  o => o.Deleted == false 
        &&  o=>o.WarehouselnkedEcorders.Where(dep=>dep.status==true) 
       .ToList(); 
+0

它应该得到o => o.WarehouselnkedEcorders.status == true。但它将WarehouselnkedEcorders显示为包含Any,Where等方法的列表。 – mastan

+0

对不起,1:当然很多...我做了一个编辑匹配 –