ASP.net Web API - 示例预先存在的数据库 Fluent NHibernate 和 Automapper

ASP.net Web API - Example pre-existing database Fluent NHibernate and Automapper

我正在研究 ASP.net Web API 2 本书 (Git Hub)

我正在尝试使用 Fluent NHibernate 和 Automapper 连接到数据库。这本书使用的是新数据库,而我的数据库是预先存在的,不一定由良好实践控制。

在加入 tables 等之前。我希望能够获得人员列表并通过 API 添加新人员。唯一的问题是,我想 return 少了实际 table 的属性,并创建了一个新人,甚至比用来显示新人的模型还要少。我无法理解自动映射器的流程。

一个例子 table 可能是

<pre>Person Entity
-person_id(int)
-person_name(varchar(100))
-person_location(int)
-person_phone(varchar(10))
-person_address(varchar(30))
</pre>

我要使用的模型包含实际 table 中项目的子集。例如,也许:

<pre>Person Model
-person_id(int)
-person_name(varchar(100)
-person_location(int)</pre>

还有一个newPerson模型

<pre>NewPerson Model
-Name
-location</pre>

我有一个具有所有人员属性的实体,例如

public virtual int person_id {get;set;}

但我有一个子集属性像

的模型
public long person_id {get; set;}

在自动映射配置文件中,我有一个 class NewPersonToPersonEntityAutoMapperTypeConfigurator 和另一个 class PersonEntityToPersonAutoMapperTypeConfigurator

我对自动映射器的工作方式感到困惑。 AutoMapper 文件 NewPersonToPersonEntityAutoMapperTypeConfigurator 是否应该使用

Mapper.CreateMap<NewPerson, PersonEntity>
.ForMember(opt => opt.person_id, x => x.Ignore())
...
.ForMember(opt => opt.person_address(varchar(30)))

同时 PersonEntityToPersonAutoMapperTypeConfigurator 使用类似

Mapper.CreateMap<PersonEntity, PersonModel>

任何人都可以向我展示一个像这样的简单场景的好例子,使用自动映射器和预先存在的 table 以及额外未使用的属性,或者描述 Automapper 应该做什么,或者我是否在正确的轨道上?

丹尼尔 - 我认为你走在正确的轨道上。是的,您需要每个 "direction"... 的 AutoMapper 映射,即到 EF 实体的传入服务消息,以及从 EF 实体到服务 return 消息。

您忽略某些属性的代码没有问题。您只需要确保正确填充实体以将 INSERT 插入数据库。例如,person_id 列 - 是否需要设置?或者那是一个自动递增的列??

换句话说...您当然可以对现有数据库使用 AutoMapper(以及我们在书中的方法)。它仍然只是将属性从一种类型映射到另一种类型。

随时按我的方式发送一些代码。