簡體   English   中英

如何使用Join with Entity Framework Lambda和Linq在兩個或多個表中進行搜索

[英]How to do a search in two or more tables using Join with Entity framework Lambda and Linq

我將如何搜索兩個或多個表。

在我正在做的系統中,我有BoatTypeOfBoatClassBoat表。

我的映射如下:

HasRequired(c => c.ClassBoat )
            .WithMany(c => c.Boat)
            .HasForeignKey(c => c.ClassBoatId);

HasRequired(c => c.TypeOfBoat)
            .WithMany(c => c.Boat)
            .HasForeignKey(c => c.TypeOfBoatId);

我做了一個通用的資料庫進行搜索

    public virtual IEnumerable<TEntity> Search(Expression<Func<TEntity, bool>> predicate)
    {
        return Dbset.Where(predicate);
    }

我使用通用的接口存儲庫對船進行特定搜索,以下是一些示例:

    public IEnumerable<Boat> GetByActive()
    {
        return Search(c => c.Active && !c.excluded);          
    }

    public Boat GetByName(string name)
    {
       return Search(c => c.Name== name).FirstOrDefault();
    }

如果我要獲取TypeOfBoatClassBoat ,它們是不同的表,但是與Boat表相關,我該怎么辦?

我的想法是將這些數據顯示在表格中

這是我的數據庫的SS。

數據庫

您的意思是包括船的相關記錄嗎?

嘗試此查詢是否給您預期的結果

public Boat GetByName(string name)
{
   var boat = DbContext.Boat
             .Include(boat => boat.ClassBoat)
             .Include(boat => boat.TypeOfBoat)
             .FirstOrDefault(boat => boat.Name == name);

   return boat;
}

如果要使用通用存儲庫然后擴展查詢,則應返回IQueryable<T>而不是IEnumerable<T>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM