我正在使用EF5代码优先方法,我只是想知道我是否应该通过Web API将实体从EF上下文中分离出来?
假设我有API动作方法
[HttpGet]
public HttpResponseMessage Get(int id)
{
var user = _userRepository.GetById(id);
if (user != null)
{
// detach here???
_userRepository.Detach(user);
return Request.CreateResponse(HttpStatusCode.Found, user);
}
return Request.CreateErrorResponse(HttpStatusCode.NotFound, string.Format("No user with id={0} is found", id));
}
实际上最佳做法是什么?我应该创建实体的投影然后暴露它吗?
答案 0 :(得分:2)
我不相信Detach是必要的,当你收回它时它会自动分离。
但考虑到您只在请求/响应环境中使用它,那么首先使用NoTracking选项加载它是明智的。消除您永远不会使用的功能的开销。