首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将整型枚举映射到Numeric(9,0)或Number(9,0)

将整型枚举映射到Numeric(9,0)或Number(9,0)
EN

Stack Overflow用户
提问于 2011-04-28 04:14:38
回答 1查看 449关注 0票数 0

我有一个映射,我不太确定该怎么做。我有一个表,它有一个Numeric(9,0)列,可能的值为0-3。我想在我的实体中将其表示为枚举,但是没有将Numeric(9,0)直接映射到整数。它是数字的原因是为了支持跨数据库(MSSQL和Oracle)。

Numeric(9,0)直接映射到不能为枚举的C#小数。这不是枚举允许的类型之一。

在这里,我需要将IUserType与ITypeConvention结合使用吗?还是有其他方法?另外,如果给出以下映射(LoginType是有问题的类型),我将如何实现此IUserType?

代码语言:javascript
复制
public enum LoginType : int
{
    UNKNOWN = 0,
    COMPANY_LOGIN = 1,
    WINDOWS_LOGIN = 2,
    LDAP_LOGIN = 3
}

public class UserHeader
{
    public virtual Guid UserId { get; set; }
    public virtual LoginType LoginType { get; set; }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-28 04:20:49

尝试使用CustomType和CustomSqlType说明符:

代码语言:javascript
复制
public class UserHeaderMap:ClassMap<UserHeader>
{
   public UserHeaderMap()
   {
      ...
      Map(x=>x.LoginType).CustomType(typeof(LoginType)).CustomSqlType("Numeric(9,0)");
   }
}

指定枚举的自定义类型告诉FNH持久化数值,而不是其默认行为,即持久化ToString()值(和/或期望它出现在表中)。CustomSqlType更多的是用于模式生成,覆盖模式列的默认int类型。

如果这不起作用,可以尝试添加一个公式()而不是CustomSqlType,以强制转换或将数值转换为整数,后者将被NH拾取并强制转换为枚举值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5809985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档