我正在使用带有Entity Framework和Backbone.js的ASP.NET Web API
我正在开发一个更新模块,允许用户更新他的XYZ。
现在,更新时可能会发生3种情况
所以我决定使用这个名为
的枚举enum UpdateStatus
{
Success = 1,
Failed = 0,
NotFound = 2
}
所以这就是我的方法看起来像
public UpdateStatus UpdateXYZ(Model model)
{
var data = _repo.Table.where(m => m.id == model.id);
if(data.count == 0)
{
return UpdateStatus.NotFound;
}
try
{
// update here
return UpdateStatus.Sucess;
}
catch
{
// log errors
return UpdateStatus.Failed;
}
}
然后在服务层中,我会将相同的值返回到我的web api操作。然后在网络API动作中,我会有类似......
public HttpResponseMessage Put(Details details)
{
if (ModelState.IsValid)
{
//The server has fulfilled the request and the user agent SHOULD reset the document view which caused the request to be sent.
//return new HttpResponseMessage(HttpStatusCode.ResetContent);
UpdateStatus = _magicService.UpdateXYZ(details);
if (UpdateStatus.Success)
{
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
else if(UpdateStatus.NotFound)
{
return new HttpResponseMessage(HttpStatusCode.Gone);
}
return new HttpResponseMessage(HttpStatusCode.Conflict);
}
else
{
string messages = string.Join("; ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage + " - " + (x.Exception == null ? "" : x.Exception.Message)));
return Request.CreateResponse<string>(HttpStatusCode.BadRequest, messages.ToString());
}
}
我已在我的repo层中定义了UpdateStatus枚举,并且也在Service和Web层中使用它。想对这种方法有什么看法,还是有其他办法可以做到这一点?
请分享您的想法。
答案 0 :(得分:1)
只要您的域模型没有离开您应该使用视图模型的Web API边界,就可以了。