【问题标题】:nHibernate: How to map a property that can be of any type?nHibernate:如何映射可以是任何类型的属性?
【发布时间】: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 问题的公认答案修改您的架构:stackoverflow.com/questions/1764435/… 它对 3NF 更友好、更灵活,并且更容易映射到 .Net POCO。
  • @KyleHale:感谢链接凯尔,我想我已经有了答案。我会接受另一个,因为它遵循相同的想法,但非常感谢您的帮助!

标签: c# nhibernate


【解决方案1】:

如果您确实只有三种不同的 Value 可能类型,请考虑创建四种不同的 Answer 类 - 一个基类 (Answer) 和三个子类(AnswerInt、AnswerString、AnswerBool)。然后,您可以执行标准映射技术之一 - 每层次结构表或每类表。

【讨论】:

    猜你喜欢
    • 2011-03-14
    • 2011-06-18
    • 2017-04-04
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多