何时使用 TableController以及何时使用 Custom DomainManager

本文关键字:何时使 DomainManager Custom TableController | 更新日期: 2023-09-27 18:33:11

我试图弄清楚什么时候拥有自定义域管理器才有意义。最初,每当我们有一个不属于TableController<T> T类型的返回类型时,我就坚持需要创建一个新的自定义域管理器。

但是,在示例应用 Xamarin 的 Sport 中,其控制器继承自 TableController<Athlete> ,但其 GET 方法返回IQueryable<AthleteDto>

public IQueryable<AthleteDto> GetAllAthletes()
{
     return ...;
}

注意:AthleteDto继承自EntityData

如果允许这样做,那么我为什么要经历创建新的域管理器的麻烦呢?

如果我的返回值不是从EntityData继承的,我只需要创建一个新的域管理器吗?

何时使用 TableController<T>以及何时使用 Custom DomainManager

应为要连接到的每种数据源创建新的域管理器。例如,有一个内置的域管理器用于Azure表存储,一个用于使用实体框架的SQL Azure。

数据类型需要继承自EntityData或实现接口ITableData才能使用 TableController<T> 。这与域管理器问题无关。

对于您引用的示例,允许在域控制器和控制器方法的返回类型之间使用不同的类型,但这会使代码更加复杂。这是因为基类方法将返回 DTO 类型,您现在必须转换为其他类型。请注意,该示例中的AthleteAthleteDto类型都继承自EntityData,因为它们都具有超类AthleteBase