And*_*ite 5 nhibernate enums hibernate
我们正在使用NHibernate,我们用于存储枚举类信息的常用模式之一是为枚举定义单独的表,并且仅使用枚举对主实体/表中的ID进行引用.一个简单的例子:
Message
-------
ID (bigint PK)
MessageTypeID (bigint FK)
Body (varchar)
MessageType
-----------
ID (bigint PK)
Value (varchar)
Run Code Online (Sandbox Code Playgroud)
MessageType表包含少量枚举值,如:SMS,MMS,PSMS等.
是否值得将枚举值放在这样的单独表中?我想枚举的专家是你可以在将来更容易地扩展它并且它更加规范化,但是你必须在每次获取消息时都进行连接.有没有一个突破点你会选择一个而不是另一个?
Die*_*cic 10
使用枚举意味着不要像现在这样使用另一个表.如你所说,它也更快,更简单.
在这两种情况下,您都可以添加更多选项,但问题是:如果在表中添加另一项,您是否需要重新编译应用程序才能添加此类功能?
我的意思是,如果您的应用程序设计是耦合的并且支持新的消息类型,您需要重新编译(可能因为您需要包含SMS实现),不值得拥有一个单独的表,并且您应该使用枚举
另一方面,如果您的实体缺少逻辑(例如,States或States表),或者您的应用程序可以在不重新编译的情况下插入新的消息类型,则应使用另一个表.为此,您可以将表更改为以下内容:
MessageType
-----------
ID (bigint PK)
Value (varchar)
ImplementationType (varchar) (ie: Xyz.SMSSender, Xyz)
Run Code Online (Sandbox Code Playgroud)
或者您可以拥有一个单独的配置文件,您可以在其中自定义注入的依赖项.
| 归档时间: |
|
| 查看次数: |
3525 次 |
| 最近记录: |