【问题标题】:When to use TableController<T> and when to use Custom DomainManager何时使用 TableController<T> 以及何时使用自定义 DomainManager
【发布时间】:2016-02-03 22:04:36
【问题描述】:

我想弄清楚什么时候拥有自定义域管理器才有意义。最初,我坚持认为,每当我们在 TableController&lt;T&gt; 中有一个不是 T 类型的返回类型时,我们都需要创建一个新的自定义域管理器。

但是,在示例应用程序 Sport by Xamarin 中,它们的控制器继承自 TableController&lt;Athlete&gt;,但它们的 GET 方法返回 IQueryable&lt;AthleteDto&gt;

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

注意:AthleteDto 确实继承自 EntityData

如果允许,那我为什么还要麻烦创建一个新的 DomainManager?

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

【问题讨论】:

    标签: c# azure asp.net-web-api2 azure-mobile-services


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-05-30
      • 2011-12-30
      • 1970-01-01
      • 2012-03-13
      • 2015-01-07
      • 2016-09-23
      • 2021-02-09
      • 2019-08-12
      相关资源
      最近更新 更多