使用Automapper使用Xamarin和c将对象映射到领域对象#

使用Automapper使用Xamarin和c将对象映射到领域对象#,xamarin,xamarin.ios,automapper,realm,Xamarin,Xamarin.ios,Automapper,Realm,我正在创建一个Xamarin.iOS应用程序和一个Realm数据库。我想将我的POCO对象与我的RealmObject对象分开,所以我使用了一个存储库模式,并在存储库中尝试使用AutoMapper将POCO映射到RealmObject e、 g.(子集) 公共类PlaceRepository:IPlaceRepository { 私人领域(u领域),; public PlaceRepository(RealmConfiguration配置) { _realm=realm.GetInstance(

我正在创建一个
Xamarin.iOS
应用程序和一个
Realm
数据库。我想将我的
POCO
对象与我的
RealmObject
对象分开,所以我使用了一个存储库模式,并在存储库中尝试使用AutoMapper将POCO映射到
RealmObject

e、 g.(子集)

公共类PlaceRepository:IPlaceRepository
{
私人领域(u领域),;
public PlaceRepository(RealmConfiguration配置)
{
_realm=realm.GetInstance(配置);
}
公共空间添加(地点)
{
使用(var trans=_realm.BeginWrite())
{
var placeRealm=_realm.CreateObject();
placeRealm=Mapper.Map(地点);
trans.Commit();
}
}
因此,如果我调试代码,所有映射都正常,placeRealm填充也正常,但当我提交时,没有任何内容保存到Realm db

public类PlaceRealm:RealmObject
{
[目的]
公共字符串Guid{get;set;}
公共字符串标题{get;set;}
公共字符串注释{get;set;}
}
这是我的POCO店

公共课堂场所
{
公共字符串Guid{get;set;}
公共字符串标题{get;set;}
公共字符串注释{get;set;}
}
自动映射的初始化方式如下:

Mapper.Initialize(cfg=>
{
CreateMap();
CreateMap();
});

所有标准的东西。有没有其他人能做到类似的工作?

你的poco“地点”被称为“地点领域”。我怀疑这是一个打字错误。(编辑)

我怀疑Automapper正在实例化一个新对象,覆盖您原来的“placeRealm”对象。 也许你可以试试

Mapper.Map(place, placeRealm);
代替当前的映射。 只需将这些值复制到已安装和跟踪的对象。 (不需要存储返回值)

您可能还希望明确哪些属性(3)正在映射,因为当前Automapper将映射所有属性,包括基类中的属性


另一方面,您可能会遇到Automapper的性能问题。我发现这是某些应用程序的性能瓶颈。ExpressMapper是一个不错的选择。

您的poco“Place”被称为“PlaceRealm”。我怀疑Automapper正在实例化一个新对象。也许您可以尝试Mapper.Map(Place,PlaceRealm);即,不存储返回值仔细查看我怀疑您是对的。基类上的属性似乎正在重置。感谢您的提醒。我将查看ExpressMapper。