何时使用TableController<T>,何时使用自定义DomainManager?

4

我正在尝试弄清何时需要使用自定义域管理器。最初,我认为每当在TableController<T>中返回类型不是T类型时,我们都需要创建一个新的自定义域管理器。

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

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

注意:AthleteDto继承自EntityData

如果允许这样做,那么为什么要费事创建一个新的DomainManager呢?

只有当我的返回值未继承自EntityData时,我才需要创建一个新的DomainManager吗?

1个回答

1
你应该为每种要连接的数据源创建一个新的DomainManager。例如,Azure Table Storage和使用Entity Framework的SQL Azure都有内置的域管理器。
您的数据类型需要继承自EntityData或实现ITableData接口才能使用TableController<T>。这与域管理器问题无关。
在您提到的示例中,允许在域管理器和控制器方法的返回类型之间使用不同的类型,但这可能会使代码更加复杂。这是因为基类方法将返回DTO类型,现在您必须转换为不同的类型。请注意,该示例中的两种类型Athlete和AthleteDto都继承自EntityData,因为它们都具有超类AthleteBase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接