Azure 移动应用程序 - Table 使用实体数据模型的控制器 class

Azure Mobile App - Table Controller using Entity Data Model class

我有一个 Azure 移动应用程序项目,它默认创建了 TodoItem table 控制器。我还有一个 DAL 项目,它使用 EF6 实体数据模型,在我的其他 ASP.Net MVC 项目中被引用。

我希望在我的应用程序项目中使用相同的 DAL 项目,而不是再次重新定义每个实体。我知道对于 Table Controller,这些实体需要从 EntityData 派生。而 DAL 项目中的那个不是,例如如下

namespace DAL.Model
{
   using System;
   using System.Collections.Generic;

   public partial class TodoItem
   {
      public System.Guid Id { get; set; }
      public string Text { get; set; }
      public Nullable<bool> Complete { get; set; }
   }
}

我知道我可以使用 API Controller 继承 DAL 项目,但想检查在此上下文中使用 TableController 的可能性。

你可以做的就是按照 this example 做的。它有一个现有模型,并使用 DTO 创建它们的 "mobile" 版本,该版本确实具有 EntityData 继承。

然后您可以在 DAL 项目项和移动项之间创建映射。

例如:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<MobileOrder, Order>();
    cfg.CreateMap<MobileCustomer, Customer>();
    cfg.CreateMap<Order, MobileOrder>()
        .ForMember(dst => dst.MobileCustomerId, map => map.MapFrom(x => x.Customer.Id))
        .ForMember(dst => dst.MobileCustomerName, map => map.MapFrom(x => x.Customer.Name));
    cfg.CreateMap<Customer, MobileCustomer>();

});

然后您创建一个域管理器来管理两者之间的逻辑,并使用它来为您的移动服务创建 Table 控制器。