2011-12-14 2 views
0

Для нового проекта я начал использовать шаблон PetaPoco T4 с GenerateOperations, GeneratePocos и GenerateCommon all = true.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; } 
    } 
} 

Как вы можете видеть, я использовал одноименное пространство.

, но затем, когда я попытался использовать класс, следующий код жалуется, что gq (который является 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; } 
} 
Смежные вопросы