2012-01-04 16 views
0

私のテーブルには、「Operation_Time」、「Create_User」などの共通の列があります。 私のエンティティオブジェクトの多くのタイプの更新コードを書くのではなく、personels、adressなどです。エンティティオブジェクトを取得し、ターゲットフィールドを更新する静的メソッドを書きたいと思っています。データセットでは、DataTableは非常に簡単でした。異なる種類のEntityオブジェクトの共通プロパティを更新する方法

function updateEntityObjectsCommonFields(EntityObject obj) 
{ /// just i guess 
    obj.Fields["Create_Usr"] = Session.Usr; 
    obj.Fields["Operation_Time"] = DateTime.Now; 
    obj.Fields["Last_Op_Usr"] = Session.Usr; 
} 

/// usage 
updateEntityObjectsCommonFields(Person) ; 
updateEntityObjectsCommonFields(Adres)  
updateEntityObjectsCommonFields(Application) ; ; 

ありがとうございます。

答えて

0

エンティティに、必要なフィールドを指定する共通のインターフェースを実装させ、このインターフェースに関して更新機能を記述します。

public interface IAuditEntity 
{ 
    User CreateUsr { get; set;} 
    DateTime OperationTime { get; set;} 
    User LastOperationUser { get; set;} 
} 

public void UpdateEntityObjectsCommonFields(IAuditEntityobj) 
{ /// just i guess 
    obj.CreateUsr = Session.Usr; 
    obj.OperationTime = DateTime.Now; 
    obj.LastOperationUser = Session.Usr; 
} 

あなたは彼らがあなたのT4 templateを修正することにより(それはすべてのエンティティに適用される場合)、または特定のエンティティがpartial classファイル内のインターフェイスを実装させることにより、インターフェイスを実装させることができます。

+0

ありがとうございました。私は解決策を試しますが、エンティティモデルを更新するとどうなりますか?それは私のすべてのインターフェイス関係を上書きするのだろうか?これに対する解決策はありますか? – Yaya

+0

Visual Studioで生成されたファイルにコードを書き込むと、上書きされます。だから私はT4を見ていたので(コード生成を簡単に変更してInterfaceを追加することができます)、部分クラスを使って(=生成されたクラスを別のコードファイルに拡張してコードを再生成する際に上書きされないように) –

+0

ありがとうございました。問題は解決される。 – Yaya

関連する問題