我有一个遗留应用程序,其中包含一个名为CustomerInvoice
的类。我需要将这些项目与名称不够友好的数据库表相关联(例如CUSTOMER_INV_HEAD
,CUST_INV_LINES
,CUST_INV_POSTS
以及其他许多其他名称。
第一次尝试是继承内部名称的接口,然后使用getter和setter将正确的数据放在各自的表中,这里的问题是逻辑存在于我的应用程序的错误层,并且都需要公开这是不可取的 - 没关系维护方面!
我已经阅读了很多关于ORM的内容,并认为AutoMapper可以正常工作,但我见过的大多数示例都证明了名称两边的名称相同。我还回顾了类似的NHibernate。
我需要做这样的事情:
public class CustomerInvoice
{
public string id; // lives in CUSTOMER_INV_HEAD
public decimal netTotal; // lives in CUSTOMER_INV_HEAD called NET_INV_TOTAL
public IEnumerable<InvoiceLine> Lines; // collection of CUST_INV_LINES but including the id
}
所以我需要做的就是说......
List<CUST_INV_LINES> l = Map<CustomerInvoice.Lines, CUST_INV_LINES>();
但是,如何在不用特殊方法手工编码关系的情况下,以一种聪明,可维护的方式定义这种关系?
答案 0 :(得分:0)
您可以将属性添加到类属性以提供其基础数据库名称。这是框架XML序列化程序采用的方法。然后,您只需要一个“特殊方法”,通过反射从类的属性中提取数据库名称属性。请注意以下示例链接使用XML元素名称覆盖属性名称 - 您可以使用自己的自定义属性对数据库可映射属性执行相同的操作。
https://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx