我(至少正在尝试)Repository pattern
在我的 .NET C# 项目中实现,所以当我需要与数据库通信时,我会这样做:
IList<Sole> soles = SoleService.All().ToList();
作为从服务调用的方法的名称,上面的查询建议我得到所有记录Sole
表格。我不想,我认为这是实现这种模式的正确方法,在我的服务中保留太多自定义逻辑。我的意思是我只想保留All()
方法和对结果的每次修改都在服务方法之外进行。
当前的问题是这样的。我有实体Sole
和实体SoleColor
。SoleColor
有一个外键列SoleID
建立两个表之间的关系。现在对于这两个实体,我只能调用All()
方法:
var soleColors = SoleColorService.All();
var soles = SoleService.All();
但是在这里,我需要以仅选择与实体Sole
相关的那些行的形式进行一些自定义。SoleColor
换句话说,最终只会得到一个列表,Sole
其中仅包含 Sole.ID 可以作为SoleColor
SoleID 外键中的外键找到的那些行。
现在我有点困惑——自从我上次使用纯 SQL 合成器以来已经有一段时间了。我认为这很容易使用 SQL 和 JOIN 实现。但是当涉及到 LINQ 并且到目前为止我的经验告诉我我需要这两个查询时:
var soleColors = SoleColorService.All();
var soles = SoleService.All();
然后进行某种 JOIN/UNION 以仅过滤我需要的结果。
那么在这种情况下我需要使用哪些工具,因为这不是我需要这个的唯一地方,我想学习自己做,当然是在目前的情况下做?