2011-01-26 2 views
1

私は決してPOCOsを使用していないので、私はビジネスオブジェクトクラスに多くのロジックを置く習慣があります。したがって、私は、クラスレイアウトに関する重要な概念やここで必要とされる思考プロセスが欠けていると思います。POCOを使用するときのビヘイビアロジックはどこに配置しますか?

私は正しい方向に私の脳を向けるためにいくつかのアイデアに感謝します。

2つのクラスがあるとします。会社と従業員。さまざまな行動やバリデーションなどを扱うクラスを "廻る"クラスを作る例をいくつか教えてください。 (いくつかのクラス名、およびその目的の簡単な説明など)

(または任意の他の例私は推測するだけとして有用であろう。)

答えて

1

あなたは、これらのクラスは、私は、私が見るthis

+0

を参照してください 「バディクラス」と呼ばれ

このような
[MetadataType(typeof(EmployeeMetadata))] public partial class Employee { public class EmployeeMetadata { [Required(ErrorMessage="Employee Name is Required")] [StringLength(50, ErrorMessage="Must be under 30 Characters")] public string Name { get; set; } } } 

そのビジネスクラスのメタデータクラスを作成することによって、検証とビジネスロジックを置くことができますこれらの属性の機能については知らなかった。私は言うのを忘れていましたが、私はDALアセンブリにあるPOCOについて考えていました。それは私がこのように拡張することを許可しません.. – bretddog

+0

あなたは実際にそれを拡張することができます問題がないだろうとあなたはそれを行う必要はないデータ注釈に来る、あなたは適切なバリデーションのためのセッターのカスタムロジックを書くことができます...しかし、標準的で簡単な方法は、属性としてそれを行うことです.. – Praneeth

0

私は通常のいずれかの論理的なコードのグループ化のためのファサード層を作成します私のシステム。たとえば、ユーザーが管理者資格情報を持っている場合、企業データと従業員データを処理する必要があるとします。

public class AdminFacade 
{ 
    public Company GetCompanyByEmployee(Employee employee) 
    { 
     // open a db session/web service call etc. 
     // run a query to find the company by employe id. 
     // populate the company object 
     // close db session 
     // return the populated customer object 
    } 
} 

私は通常私のGUIを持っているが、すべてのファサードクラスをインスタンス化し、それが持つすべてのものをGUIのお得な情報である:だから、その場合には、次のように私はAdminFacadeクラスを作成します。また、GetCompanyByEmployeeメソッドの開始時に検証を追加し、employee.startdateが1年未満であるとすると例外をスローすることもできます。

希望に役立ちます。

関連する問題