0

私は、従来のデータ/ビジネス/プレゼンテーションレイヤーアプローチを実装するasp.net MVCアプリケーションで作業しています。簡単なデータ操作:エンティティモデルまたはビジネスレイヤーで?

個人を表す私のエンティティモデルの1つに、「州」のフィールドを含む住所/連絡先情報が含まれています。私のデータソース(ほとんど管理していない)は、フルテキスト(例: "カリフォルニア" vs "CA"、 "フロリダ" vs "FL"など)の状態値を提供します。

フルテキスト値を省略形に変換するために使用する静的ヘルパークラスを作成しました。

私の質問は、このヘルパークラスはどこで参照されるべきですか、どこで変換が行われるべきですか?

私は、次のオプションを参照してください。

  • この静的クラスを参照するとGETに変換を実行し、モデル内のアクセサを使用してください。線に沿って何か:このエンティティモデルは、この値がある時はいつでもプレゼンテーション層で変換を実行し

  • を使用するたびに

public string State 
    { 
     get 
     { 
      return StateConverter.Abbreviate(_state); 
     } 
    } 
  • は、ビジネス層で変換を行います表示される

私はこれを実際のモデルで(アクセサーを介して)行うのが簡単ですが、これはビジネスロジックのような小さな匂いがします。他のオプションは、これを多くの場所で変換する必要があることを意味します(ロジックの複製、人物リストのトラバースなど)。

ありがとうございました。

答えて

0

計算されたフィールドなので、モデルに入れても問題ありません。さらに、Abbreviate(...)メソッドは、モデル外のデータにも依存しません。あなたがそこに置く権利。

+0

これは意味があります。それは別の疑問を引き起こす。今では、私は全モデルが自分のプロジェクトであり、私の全体的な解決策にあります。私はまたフレームワーク/ヘルパークラスのためだけに別のプロジェクトを持っています。 EntityModelプロジェクトには他の外部参照はありません。私のヘルパープロジェクトへの参照を追加することは受け入れられると考えられますか? – comfortablEnum

+0

ヘルパー/インフラストラクチャ層はクロスカッティングに関する懸案事項を扱うので、問題ありません。あなたはあなたのアプリの任意の層でそれを参照することができます。 – Mualle

関連する問題