2011-12-14 9 views
0

新しいプロジェクトでは、GenerateOperationsGeneratePocos、およびGenerateCommon all = trueのPetaPoco T4テンプレートを使い始めました。Petapoco - T4テンプレート拡張pocoオブジェクト

しかし、私は生成されたpocoオブジェクトをカスタマイズしたいと思います。生成されたクラスを変更すると、スキーマを変更するたびに削除されます。生成されたpocoオブジェクトを拡張する最良の方法は何ですか?


Schotime氏によると、このソリューションは部分的なクラスを使用している可能性がありますが、その作業を行うには苦労しています。 ここに私のコード構造があります。

はDatabase.csファイル(T4テンプレートによって自動生成)

namespace PetaPocoNISEntities 
{ 
    public partial class PetaPocoNISEntities : Database 
    { 

     [TableName("GivenQuestion")] 
     [PrimaryKey("Id")] 
     [ExplicitColumns]  
     public partial class GivenQuestion : PetaPocoNISEntities.Record<GivenQuestion> 
     { 
      [Column] 
      public int Id    
      { 
       .... 
      } 
     } 
} 

}

にので、私は、次の部分的なクラスを作成しました。

namespace PetaPocoNISEntities 
{ 
    public partial class PetaPocoNISEntities : Database 
    { 
     public partial class GivenQuestion : PetaPocoNISEntities.Record<GivenQuestion> 

      [ResultColumn] 
      public QuestionRepository QuestionRepository { get; set; } 

      [ResultColumn] 
      public List<GivenAnswer> GivenAnswers { get; set; } 
    } 
} 

私は同じ名前空間を使用しています。

しかし、クラスを使用しようとすると、次のコードはgiven(GivenQuestion)がQuestinoRepositoryメソッドを含んでいないと不平を言いますか?

var givenAnswers = results.Where(gq => gq.QuestionRepository .QuestionCode.Trim().ToUpper() == _formData.Trim().ToUpper()); 

答えて

3

partialクラスを使用できます。 次に、部分クラスを変更して余分な情報を追加することができます。

0

あなたのクラスは、書かれたとおりにネストすることはできません。部分クラスでPOCOオブジェクトを拡張するのに問題はありませんでした。 [PetaPoco.Ignore]で

また、私はのように追加の列を飾るたい:

public partial class GivenQuestion 
{ 
    [PetaPoco.Ignore] 
    public QuestionRepository QuestionRepository { get; set; } 
    [PetaPoco.Ignore] 
    public List<GivenAnswer> GivenAnswers { get; set; } 
} 
関連する問題