对于新项目,我开始使用PetaPoco T4模板GenerateOperations
,GeneratePocos
和GenerateCommon
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());
有什么想法吗?
答案 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; }
}