[英]How to do a search in two or more tables using Join with Entity framework Lambda and Linq
我將如何搜索兩個或多個表。
在我正在做的系統中,我有Boat
, TypeOfBoat
和ClassBoat
表。
我的映射如下:
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();
}
如果我要獲取TypeOfBoat
和ClassBoat
,它們是不同的表,但是與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.