1
20
若要将枚举属性映射为int列,请使用方法
为了使枚举和查找表保持同步,我将向sql脚本中添加查找表和数据。集成测试可以验证枚举值和查找表值是否相同。 如果您希望schemaexport创建此表,请为其添加一个类和映射。
如果要使用schemaexport创建表,还需要填充它:
|
2
5
我不会这么做,因为您的枚举声明不是动态的,或者更简单,它不会在不重新编译的情况下更改,而您的查找表可能随时更改。如果枚举和查找表的值不匹配,下一步是什么? 另一个原因是,如果更改枚举(在代码中),则必须将其与数据库表同步。因为枚举没有递增键(pk),所以它们不能如此简单地同步。假设从代码中删除一个枚举成员并重新编译它,会发生什么情况?如果你改变一个值呢? 我希望我清楚地表明了我对这种做法的反对意见。因此,我强烈建议您存储枚举成员的名称或值。要按名称存储,请按如下方式映射:
要存储这些值,请按照@lachlan在其答案中发布的操作。 或者,如果您确实需要一个查找表,并且希望使用带有严格检查的枚举,请使用 PK (或为此使用值), 钥匙 和 价值 . 使用静态成员创建枚举,并使应用程序查询 姓名 和 价值观 当你开始的时候。如果事情不匹配,做任何你需要的。另外,这不能保证您的表在程序运行时不会更改,所以您最好确保它不会更改。 |
Stu · 具有特定类型的字符串外键的NHibernate映射 6 年前 |
Nick · Fluent NHibernate映射没有主键的联接表 7 年前 |
ViqMontana · 如何使用结构图模拟基类? 7 年前 |
Th3B0Y · 无法使用父Id保存子项 8 年前 |