当前位置:  开发笔记 > 编程语言 > 正文

在NHibernate中规范化EnumStringType

如何解决《在NHibernate中规范化EnumStringType》经验,为你挑选了1个好方法。

我目前在NHibernate中使用枚举如下映射..

public enum UploadMethod
{
    Java, Silverlight, Gears, Flash
}

class UploadMethodType : EnumStringType
{
    public UploadMethodType() : base(typeof(UploadMethod), 255) { }
}

public class Person
{
    /* Bunch of non interesting properties... */
    public UploadMethod PreferredUploadMethod { get; set; }
}


 
  
  
 

除了数据库远离规范化之外,其中的工作完全正常,People表中的每一行都有一个包含四个文本字符串之一的列.我现在将它分成一个新表,但我不确定如何在NHibernate中创建映射.我的第一直觉只是但我不希望这个枚举成为它自己的实体,我基本上只需要NHibernate来做一个简单的连接来增加额外的列.

作为一个止损,我刚刚创建了一个视图,它工作得很好,但我宁愿那个抽象层在我的NHibernate映射中,而不是模式.



1> Stefan Stein..:

如果我理解正确,您的数据库将完全正常化.你告诉NHibernate将Enum存储为一个字符串,这是一件好事.枚举不是一个实体.它的定义不应该存储在数据库中,因为它是用C#定义的.

如果删除EnumStringType并将枚举映射为Int32,则将其作为数字获取.这对您来说可能看起来更"规范化",但是当您更改枚举并且必须处理旧数据库时,这可能是一个潜在的问题.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有