2012-12-19 82 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:當然很多...我做了一個編輯匹配 –