2014-09-30 4 views
5

में नहीं मिला वस्तु मैं एक 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); 
    } 
} 

मैं अपने WebAPI आवेदन में CRUD प्रदर्शन करने के लिए, अब मेरे repostory में मैं GetMovieById विधि लिख रहा हूँ रिपोजिटरी से इस dll बोल रहा हूँ परिभाषित किया गया है है जिसमें मैं उलझन में हूं कि अगर फिल्म को रिपॉजिटरी में नहीं मिला है और वेबपै में इसे संभालने का अधिक उचित तरीका क्या है?

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 डेनिस, लेकिन उस विधि के अन्य भाग में क्या लिखना है? एक और चीज तो वेब एपीआई विधि प्राप्त करें, मुझे यह जांचना नहीं चाहिए (फिल्म == शून्य)? – F11

+0

यह 'GetDataById' कार्यान्वयन पर निर्भर करता है। मुझे नहीं पता, यह स्टोर से डेटा कैसे प्राप्त करता है। साथ ही, आप परत पदानुक्रम अनावश्यक दिखते हैं, क्योंकि 'मूवीडेटा स्रोत' और 'मूवी रिपोजिटरी' में समान कार्यक्षमता प्रतीत होती है। – Dennis

संबंधित मुद्दे