何时使用 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
继承的,我只需要创建一个新的域管理器吗?
应为要连接到的每种数据源创建新的域管理器。例如,有一个内置的域管理器用于Azure表存储,一个用于使用实体框架的SQL Azure。
数据类型需要继承自EntityData
或实现接口ITableData
才能使用 TableController<T>
。这与域管理器问题无关。
对于您引用的示例,允许在域控制器和控制器方法的返回类型之间使用不同的类型,但这会使代码更加复杂。这是因为基类方法将返回 DTO 类型,您现在必须转换为其他类型。请注意,该示例中的Athlete
和AthleteDto
类型都继承自EntityData
,因为它们都具有超类AthleteBase
。