何时使用 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 类型,您现在必须转换为不同的类型。请注意,该示例中的 Athlete
和 AthleteDto
类型都继承自 EntityData
,因为它们都具有 superclass AthleteBase
.
我想弄清楚什么时候拥有自定义域管理器才有意义。最初,我认为每当我们有一个 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 类型,您现在必须转换为不同的类型。请注意,该示例中的 Athlete
和 AthleteDto
类型都继承自 EntityData
,因为它们都具有 superclass AthleteBase
.