我有一个Azure Mobile App项目,默认情况下创建了TodoItem表控制器。我还有一个使用 EF6实体数据模型的DAL项目,该项目在我的其他ASP.Net MVC项目中引用。
我希望在我的应用项目中使用相同的DAL项目,而不是再次重新定义每个实体。我理解,对于表控制器,这些实体需要从 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的可能性。
答案 0 :(得分:1)
你可以做的是遵循this example所做的事情。它有一个现有的模型,并使用DTO创建具有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>();
});
然后创建域管理器来管理两者之间的逻辑,并使用它来为您的移动服务创建表控制器。