【发布时间】:2011-03-09 23:52:49
【问题描述】:
我们有一些旧表,其中包含我们发现难以使用的旧架构。
是否可以使用 NHibernate 将其中一些数据转换为更好的模型?
例如,我们可能有一个整数状态列,我们希望将其分解为多个属性。
Legacy status: 0 - Active, 1 - Inactive, 2 - TemporarilyInactive, 3 - etc
我们想要这样的东西:
bool IsActive { get; set; }
Status Status { get; set; }
(其中Status 是一个枚举)
我知道我们可以使用protected 字段来获取状态,然后定义额外属性的 getter 以根据支持字段返回适当的值,但我很确定这将禁用能够根据这些属性进行查询。
但是,通过这种方式,我们将无法执行诸如 .Query(p => p.IsActive) 之类的查询并将其转换为诸如 where status = 0 之类的 SQL,对吧?
是不是只能通过自定义IUserTypes?如果是这样,是否有任何帮助框架可以更轻松地使用 IUserType 以实现此目的?
其他人如何处理这个问题?
【问题讨论】:
标签: nhibernate legacy brownfield