0

GenerateOperations新しいプロジェクトでは、、、GeneratePocosおよびGenerateCommonall=trueのPetaPocoT4テンプレートの使用を開始しました。

ただし、生成された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; }
    }
}

ご覧のとおり、同じ名前空間を使用しました。

しかし、クラスを使おうとすると、次のコードは、gq(GivenQuestion)にQuestinoRepositoryメソッドが含まれていないと文句を言います。

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

何か案は?

4

2 に答える 2

3

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

于 2011-12-15T07:25:12.690 に答える
0

あなたが書いたように、あなたのクラスはネストされるべきではありません。POCO オブジェクトを部分クラスで拡張しても問題はありませんでした。

また、次のように、追加された列を [PetaPoco.Ignore] で装飾します。

public partial class GivenQuestion
{
    [PetaPoco.Ignore]
    public QuestionRepository QuestionRepository { get; set; }
    [PetaPoco.Ignore]
    public List<GivenAnswer> GivenAnswers { get; set; }
}
于 2012-01-17T08:55:50.027 に答える