正在处理存储库中找不到的对象
本文关键字:找不到 对象 处理 存储 | 更新日期: 2023-09-27 18:25:05
我有一个externall dll,其中定义了以下
namespace MoviesLibrary
{
public class MovieDataSource
{
public MovieDataSource();
public int Create(MovieData movie);
public List<MovieData> GetAllData();
public MovieData GetDataById(int id);
public void Update(MovieData movie);
}
}
我正在从存储库调用这个dll,以在我的webapi应用程序中执行CRUD,现在在我的存储库中,我正在编写GetMovieById方法,在该方法中,如果在存储库中找不到电影,我很困惑该返回什么,以及在webapi中处理这个问题的更合适的方法是什么?
MovieRepository
public Movie GetMovieById(int movieId)
{
MovieData movieData = new MovieDataSource().GetDataById(movieId);
if (movieData != null)
{
return MovieDataToMovieModel(movieData);
}
else
{
??
}
}
电影控制器
/// <summary>
/// Returns a movie
/// </summary>
/// <param name="movie">movieId</param>
/// <returns>Movie</returns>
public Movie Get(int movieId)
{
//try
//{
var movie = repository.GetMovieById(movieId);
if (movie == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return movie;
//}
//catch (Exception e)
//{
// if (e is HttpResponseException)
// throw new HttpResponseException(HttpStatusCode.NotFound);
//}
}
通常,如果实体的主键没有找到,则应该抛出异常
根据使用情况,您可以在存储库中放入两种方法(以及使用存储库的外部代码):
public MovieData GetDataById(int id); // this throws an exception, if not found
public MovieData GetDataByIdOrDefault(int id); // this returns null, if not found
如果实体必须存在于数据源中,则调用第一个;如果实体可以出现于数据源,则调用第二个。