Azure Mobile Services AutoMapper HttpResponseException at Qu
本文关键字:at Qu HttpResponseException AutoMapper Mobile Services Azure | 更新日期: 2023-09-27 18:33:39
我试图完成本教程。内容只是简单的对象到DTO
的映射。
我在WebConfig.cs
初始化了我的映射器
public static void Register()
{
// Use this class to set configuration options for your mobile service
ConfigOptions options = new ConfigOptions();
// Use this class to set WebAPI configuration options
HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));
AutoMapper.Mapper.Initialize(cfg =>
{
// Define a map from the database type TodoItem to
// client type TodoItemDto. Used when getting data.
cfg.CreateMap<TodoItem, TodoItemDto>();
// Define a map from the client type to the database
// type. Used when inserting and updating data.
cfg.CreateMap<TodoItemDto, TodoItem>();
});
// To display errors in the browser during development, uncomment the following
// line. Comment it out again when you deploy your service for production use.
// config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
Database.SetInitializer(new my_Initializer());
}
我添加了教程中所示的 DTO 类并准备了控制器
public class TodoItemController : TableController<TodoItemDto>
{
protected override void Initialize(HttpControllerContext controllerContext)
{
base.Initialize(controllerContext);
my_Context context = new my_Context();
DomainManager = new SimpleMappedEntityDomainManager(context, Request, Services);
}
public IQueryable<TodoItemDto> GetAllTodoItems()
{
return Query();
}
public SingleResult<TodoItemDto> GetTodoItem(string id)
{
return Lookup(id);
}
public Task<TodoItemDto> PatchTodoItem(string id, Delta<TodoItemDto> patch)
{
return UpdateAsync(id, patch);
}
public async Task<IHttpActionResult> PostTodoItem(TodoItemDto item)
{
TodoItemDto current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
public Task DeleteTodoItem(string id)
{
return DeleteAsync(id);
}
}
我一步一步地完成了本教程。我真的试图做同样的事情。但最后,当我打电话给GetAllTodoItems()
时,我都会得到一个HttpResponseException
.
编辑:当我在return Query()
打电话给GetAllTodoItems()
时,我得到了我的HttpResponseException
。
我可以在上下文中看到我的两个待办事项(我播种的)。所以我的上下文不是空的。我的DomainManager
与教程中的相同。
我什至不映射不同的值。我的模型与本教程的第一章相似。
public class TodoItem : EntityData
{
public string Text { get; set; }
public bool Complete { get; set; }
}
public class TodoItemDto : Microsoft.WindowsAzure.Mobile.Service.EntityData
{
public string Text { get; set; }
public bool Complete { get; set; }
}
映射看起来很容易,我不明白我做错了什么。
伙计,你的代码看起来不错。在我看来,也许域管理器有问题,但无法判断您是否不发布它或实体框架存在一些问题(对我来说很常见)。
您最好向我们提供堆栈中的错误异常。
最后检查数据库架构,它必须与模型(包括 EntityData 属性)完全相同,或者,如果转到代码优先,请设置初始值设定项权限。使用 ClearSchemaIfModelChanges 初始值设定项。也许自从你的种子以来有一些变化。
我发现我的DomainManager
中得到了一个MissingMethodException
。我覆盖了DomainManager
的Query()
,终于找到了它。看起来我在 nuget包/版本控制方面遇到了一些问题。