2017-01-05 19 views
0

私のアプリケーションでは、データベーステーブルの束の数をチェックするチェックがあります。これらのCOUNTSのそれぞれが特定のしきい値を超えている場合は、プロパティーをアクティブとして設定します。ここでは、ユーザがこのコードを再利用できるようにするにはどうすればよいですか?

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Create([Bind(Include = "ID,RoomTypeID,Description")] Room room, int propertyId) 
    { 
     if (ModelState.IsValid) 
     { 
      room.ID = Guid.NewGuid(); 
      room.DateCreated = DateTime.Now; 
      room.PropertyID = propertyId; 
      db.Rooms.Add(room); 
      await db.SaveChangesAsync(); 
      var roomCount = db.Rooms.Where(r => r.PropertyID == propertyId).Count(); 
      var rateCount = db.Rates.Where(r => r.PropertyID == propertyId).Count(); 
      var imageCount = db.PropertyImage.Where(r => r.PropertyID == propertyId).Count(); 
      if(roomCount >= 3 && rateCount >= 3 && imageCount >= 3) 
      { 
       //Set Property as ACTIVE 
      } 
      return RedirectToAction("Index"); 
     } 

私が持っている問題部屋の情報を追加して、コントローラの例です、私はこのチェックを実行したいということである(3つのデータベース数と文の「もし」)の全体の束にコントローラ。私はすべてのアクションのためにすべてのコントローラでこの設定を複製する必要はありません。また、このチェックは変更される可能性がありますので、私はちょうど1つの場所でそれを更新したいと思います。

どうすればこのようにするのが最適でしょうか?私はヘルパークラスのいくつかの並べ替えを作成する必要がありますか?

ありがとうございました

答えて

1

あなたは正しい方向にあります。あなたは、あなたのニーズに基づいて、あるいはあなたのアプリケーションで既に確立されている分離のレベルに応じて、その責任を分けたいと思っています。少なくとも、私はDBにアクセスする1つのクラスを作成し、「if」決定を行うロジックを含むクラスを作成します。例えば、Controller - > calls Helper - > calls DBAccessor

+0

コントローラクラスからしかデータベースにアクセスできないという印象を受けましたか?私はエンティティフレームワークを使用しているので、 'Helper'という正しい用語がありますので、私はGoogleでこの種のチュートリアルがあるかどうか確認できますか? – Gavin5511

+1

Nティアアーキテクチャーには、その背後にある理論を理解するために少し読んでいます。あなたの特定のニーズに即して、シンプルに保ち、 "ヘルパー"や "ユーティリティ"の用語を使用するのはおそらく問題ありません。 –

+0

また、コントローラの外部のデータベースにアクセスすることも可能です。たとえば、Webアプリケーションプロジェクトとはまったく異なるプロジェクトからデータベースにアクセスする方が好きな人もいます。 –

関連する問題