【问题标题】:Implementing the IMapper interface实现 IMapper 接口
【发布时间】:2013-09-25 00:12:08
【问题描述】:

我过去使用过 PetaPoco,用[Column("{column name")] 属性等装饰我的对象。但是,我正在尝试实现一个“纯”域模型,它不了解持久性,因此不了解 PetaPoco 的属性。

PetaPoco blog 提到必须实现一个 IMapper 接口(“新映射器 API”),以便将对象映射到它们的表而不修饰对象的类。但是,无论是博文还是源代码都没有真正解释 IMapper 的实现应该做什么。

如果我只是想将我的域实体映射到特定的表、主键和列名,我是否需要实现 IMapper 以及如何实现?

【问题讨论】:

标签: petapoco


【解决方案1】:

有更多关于映射器here 的最新信息。基本上,您可以选择编写一个实现IMapper 的类或创建ConventionMapper 的后代(它已经实现了IMapper 并提供了更详细的自定义挂钩)。您可以选择为每种类型编写一个映射器,或为每个程序集编写一个映射器。

ConventionMapper 已经非常聪明地从一个类型中推断出表和列的名称,如果你遵循某些命名约定(因此得名);有时,只需为InflectColumnName()InflectTableName() 创建一个具有一些备用规则的后代并将其注册到整个程序集就足够了。但是,如果您的字段名称看起来与表列名称完全不同,那么 IMO 您最好从头开始为每种类型实现 IMapper(或从 StandardMapper 继承)并填写所有细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 2016-06-20
    • 2011-08-28
    • 2014-08-21
    • 2017-07-02
    • 2015-11-08
    • 2012-08-26
    相关资源
    最近更新 更多