gpt4 book ai didi

c# - 处理存储库中未找到的对象

转载 作者:太空狗 更新时间:2023-10-29 23:30:55 26 4
gpt4 key购买 nike

我有一个外部 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 中处理这个?

电影资料库

 public Movie GetMovieById(int movieId)
{

MovieData movieData = new MovieDataSource().GetDataById(movieId);
if (movieData != null)
{
return MovieDataToMovieModel(movieData);
}
else
{
??
}
}

电影 Controller

/// <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

如果实体必须出现在数据源中,则调用第一个,如果实体可以出现在数据源中,则调用第二个。

关于c# - 处理存储库中未找到的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com