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

When to use TableController<T> and when to use Custom DomainManager

我想弄清楚什么时候拥有自定义域管理器才有意义。最初,我认为每当我们有一个 return 类型不是 TableController<T> 中的 T 类型时,我们需要创建一个新的自定义 DomainManager。

但是,在示例应用程序 Sport by Xamarin 中,它们的控制器继承自 TableController<Athlete>,但是它们的 GET 方法 returns IQueryable<AthleteDto>

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

注意:AthleteDto 继承自 EntityData

如果允许,那我为什么要费心去创建一个新的 DomainManager?

如果我的 return 值不是从 EntityData 继承的,我是否只需要创建一个新的 DomainManager?

您应该为要连接的每种数据源创建一个新的 DomainManager。例如,有一个用于 Azure Table 存储的内置域管理器和一个用于 SQL Azure 使用 Entity Framework.

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

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