Petapoco - 扩展T4模板生成的poco对象

时间:2011-12-14 14:48:40

标签: petapoco

对于新项目,我开始使用PetaPoco T4模板GenerateOperationsGeneratePocosGenerateCommon all = true。

但是,我想自定义生成的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());

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用partial课程。 然后,您可以修改分部类以添加额外信息。

答案 1 :(得分:0)

您的课程不应该嵌入您的课程。我用部分类扩展了我的POCO对象没有任何问题。

另外,我用[PetaPoco.Ignore]装饰添加的列,如下所示:

public partial class GivenQuestion
{
    [PetaPoco.Ignore]
    public QuestionRepository QuestionRepository { get; set; }
    [PetaPoco.Ignore]
    public List<GivenAnswer> GivenAnswers { get; set; }
}