我过去曾使用过PetaPoco,并用[Column("{column name")]
属性装饰我的对象,依此类推。但是,我正在尝试实现一个“纯”域模型,该模型不了解持久性,因此也不了解PetaPoco的属性。
PetaPoco blog提到必须存在一个IMapper
接口(“ New Mapper API”),以便将对象映射到其表而不修饰对象的类。但是,博客文章或源代码均未真正说明IMapper
的实现应执行的操作。
如果我仅想将域实体映射到特定的表,主键和列名,是否需要实现IMapper
,我该怎么做?
[有关映射器here的最新信息。基本上,您可以选择编写实现IMapper
的类或创建ConventionMapper
的后代(已经实现IMapper
并提供更详细的自定义挂钩)。您可以选择为每种类型编写一个映射程序,或为每个程序集编写一个映射程序。
ConventionMapper
已经很聪明,如果您遵循某些命名约定,则可以从类型推断表和列的名称(因此,名称);有时,足以使后代仅具有InflectColumnName()
和InflectTableName()
的一些替代规则,并为整个程序集注册它。但是,如果您的字段名实际上看起来与表列名看起来不一样,那么IMO最好从零开始(或继承自IMapper
)每种类型实现一个StandardMapper
并填写所有详细信息。