2014-09-30 48 views
5

找不到對象我有其中以下定義處理在倉庫

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,現在在我的repostory我寫GetMovieById方法externall DLL其中我很困惑如果在存儲庫中找不到電影會返回什麼內容,以及在webapi中處理此問題的更合適的方法是什麼?

MovieRepository

public Movie GetMovieById(int movieId) 
     { 

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

MoviesController

/// <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); 
    //} 
} 

回答

2

通常情況下,你應該拋出一個異常,如果實體不通過主鍵找到。
根據使用的情況下,你可以把你的資料庫(和外部的代碼,這與倉庫工作)兩種方法:

public MovieData GetDataById(int id); // this throws an exception, if not found 
public MovieData GetDataByIdOrDefault(int id); // this returns null, if not found 

,並呼籲第一位的,如果實體必須存在於數據源,或第二個,如果實體可能存在於數據源中。

+0

thnx dennis,但在該方法的其他部分寫什麼?還有一件事情,然後網頁API獲取方法,我不應該檢查這(電影==空)? – F11 2014-09-30 04:51:40

+0

它依賴於'GetDataById'實現。我不知道,它是如何從商店中檢索數據的。此外,您的圖層層次結構看起來多餘,因爲「MovieDataSource」和「MovieRepository」似乎具有相同的功能。 – Dennis 2014-09-30 05:02:25