nHibernate:如何映射可以是任何类型的属性?
Posted
技术标签:
【中文标题】nHibernate:如何映射可以是任何类型的属性?【英文标题】:nHibernate: How to map a property that can be of any type? 【发布时间】:2014-08-07 20:23:22 【问题描述】:我有这样的课程:
public class Answer
virtual public int Number get; set;
virtual public object Value get; set;
Value
属性的类型为 object
,因为对于是/否问题,它将保存 bool
值,对于选择题,它将保存 int
值,对于未决问题,它将保存持有string
值。
我打算将这样的类保存在 Microsoft SQL Server 2012 表中,即存储在 varbinary
列中的 Value
(尚不确定这是个好主意)。
如何在 nHibernate 中映射这样的类?
提前致谢!
【问题讨论】:
所以我会确认你的 varbinary 不是一个好主意。请考虑根据以下 SO 问题的公认答案修改您的架构:***.com/questions/1764435/… 它对 3NF 更友好、更灵活,并且更容易映射到 .Net POCO。 @KyleHale:感谢链接凯尔,我想我已经有了答案。我会接受另一个,因为它遵循相同的想法,但非常感谢您的帮助! 【参考方案1】:如果您确实只有三种不同的 Value 可能类型,请考虑创建四种不同的 Answer 类 - 一个基类 (Answer) 和三个子类(AnswerInt、AnswerString、AnswerBool)。然后,您可以执行标准映射技术之一 - 每层次结构表或每类表。
【讨论】:
以上是关于nHibernate:如何映射可以是任何类型的属性?的主要内容,如果未能解决你的问题,请参考以下文章