如何搜索两个或多个表。
在我正在使用的系统中,我有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。
答案 0 :(得分:0)
您的意思是包括船的相关记录吗?
尝试此查询是否能为您带来预期的结果
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>
。