NHibernate:向DateTime映射以非标准方式存储的值的最佳方式

时间:2008-12-26 00:02:27

标签: .net nhibernate orm mapping

我刚刚开始使用NHibernate(看起来似乎是第15次)并且遇到了以下问题。

下表:

Table Facility
Column FACILITY_ID integer
Column NAME varchar2(50)
Column MONTH varchar2(5)

无论出于何种原因,month是字符串而不是本机Date类型,如下所示:

"200811" represents 11/01/2008
"200307" represents 07/01/2003
you get the idea

我想将它映射到以下类

public class Facility {
  int Id {get; set;}
  string Name {get; set;}
  DateTime Month {get; set;}
}

我想将MONTH列映射到Month属性,但不太了解如何处理这种情况。显然,我可以有一个受保护的属性字符串MonthString并且具有Month属性Parse该列,但这看起来很蹩脚。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我认为最好的解决方案可能是使用custom value type

答案 1 :(得分:0)

如果无法修改数据库架构,答案为IUserTypeHere is a good write-up

有许多扩展点可以帮助您解决NHibernate中的复杂问题。最有用的扩展点是IUserType。