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