【发布时间】:2018-02-23 20:57:21
【问题描述】:
我有以下表格结构。这两个表有很多共同的属性超过 20 我只是列出两个。我也有10张类似的桌子。这就是表在数据库中的样子。有超过 10 个具有相似属性的混凝土表,并且没有以任何方式相互连接。我正在使用 POCO 生成器从我的数据库中生成类。
public class A
{
public string name {get;set;}
public string address {get;set;}
public string AId {get;set;}
}
public class B
{
public string name {get;set;}
public string address {get;set;}
public string BId {get;set;}
}
我有以下视图模型:
public class BaseViewModel
{
public string Fullname {get;set;}
public string Fulladdress {get;set;}
}
public class AviewModel : BaseViewModel
{
public string AId {get;set;}
}
public class BViewModel : BaseViewModel
{
public string BId {get;set;}
}
当我创建映射时,我必须为我创建的每个视图模型重复所有这些。
config.CreateMap<A, AviewModel>()
.ForMember(dest => Fulladdress, opt => opt.MapFrom(src =>.address))
.ForMember(dest => Fullname, opt => opt.MapFrom(src =>.name)).ReverseMap();
config.CreateMap<B, BviewModel>()
.ForMember(dest => Fulladdress, opt => opt.MapFrom(src =>.address))
.ForMember(dest => Fullname, opt => opt.MapFrom(src =>.name)).ReverseMap();
是否有可能减少我可能不得不做的重复映射?
【问题讨论】:
-
为什么不为实体提取和使用基类,就像为视图模型所做的一样。
-
@IvanStoev 所以我正在使用 POCO 生成的类,我不想手动更改类中的任何内容。所以这意味着每次有人更新 .tt 文件时,我的构造就消失了。
-
其实你是对的似乎是最好的解决方案
-
大声笑,很高兴在研究非基类解决方案之后听到这个消息。
-
大声笑我刚刚看了你的新答案,这可能是一个更简单的解决方案。非常感谢:)
标签: c# asp.net entity-framework automapper poco