我想知道什么时候有一个自定义域管理器是有意义的。最初,每当我们在T
中有一个非TableController<T>
类型的返回类型时,我就会强制要求创建一个新的自定义DomainManager。
但是,在示例应用Sport by Xamarin中,他们的控制器继承自TableController<Athlete>
,但他们的GET方法返回IQueryable<AthleteDto>
public IQueryable<AthleteDto> GetAllAthletes()
{
return ...;
}
注意:AthleteDto
确实继承自EntityData
如果允许,那么为什么我会遇到创建新DomainManager的麻烦?
如果我的返回值没有从EntityData
继承,我只需要创建一个新的DomainManager吗?
答案 0 :(得分:1)
您应该为要连接的每种数据源创建一个新的DomainManager。例如,Azure Table Storage有一个内置的域管理器,使用Entity Framework有一个用于SQL Azure的域管理器。
您的数据类型需要从EntityData
继承或实施接口ITableData
才能使用TableController<T>
。这与域管理员问题无关。
对于您引用的示例,允许在域管理器和控制器方法的返回类型之间使用不同的类型,但它可以使代码更复杂。这是因为基类方法将返回DTO类型,您现在必须转换为其他类型。请注意,该示例中的Athlete
和AthleteDto
类型都继承自EntityData
,因为它们都具有超类AthleteBase
。