【问题标题】:Could not determine type for columns: NHibernate.Mapping.Column(EnumType)无法确定列的类型:NHibernate.Mapping.Column(EnumType)
【发布时间】:2016-04-18 05:40:59
【问题描述】:

虽然这个问题已经被问过好几次了,我一直在关注同样的strategy,但还是无济于事!

映射类:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns ="urn:nhibernate-mapping-2.2"
                   assembly ="Abc.Repository"
                   namespace ="Abc.Repository.Domain.Classes">

  <class name="SecPermission" table="SEC_PERMISSION">

    <id name="PerId" column="PER_ID" type="String" >
      <generator class="assigned" />
    </id>

    <property name="PerName" column="PER_NAME" not-null="true"/>

    <property name="PerParentId" column="PER_PARENT_ID" not-null="false"/>

    <property name="PerType" column="PERMISSION_TYPE" type="NHibernate.Type.EnumStringType`1                  [[Abc.Repository.Domain.Classes.SecPermission.permissionType, Abc.Repository]], NHibernate" not-null="false"/>

    <property name="CreatedOn" column="CREATED_ON" not-null="true"/>

    <property name="CreatedBy" column="CREATED_BY" not-null="true"/>

    <property name="UpdatedOn" column="UPDATED_ON" not-null="true"/>

    <property name="UpdatedBy" column="UPDATED_BY" not-null="true"/>

    <set name="pGroups" cascade="all-delete-orphan" inverse="true" >
      <key column="PER_ID" />
      <one-to-many class="SecGroupPermission" />
    </set>

  </class>
</hibernate-mapping>

.cs 类

namespace Abc.Repository.Domain.Classes
{
    public class SecPermission : IEquatable<SecPermission>
    {
        #region Constructors

        public SecPermission()
        {

        }

        #endregion

        #region Enum
        public enum permissionType
        {
            Module ,
            Category ,
            Atomic ,
            Tab
        }

public virtual Abc.Repository.Domain.Classes.SecPermission.permissionType PerType { get; set; }
        }
    }

数据库表

CREATE TABLE [dbo].[SEC_PERMISSION](
    [PER_ID] [varchar](200) NOT NULL,
    [PER_PARENT_ID] [varchar](200) NULL,
    [PER_NAME] [nvarchar](200) NOT NULL,
    [PERMISSION_TYPE] [varchar](50) NULL,
    [CREATED_ON] [datetime] NOT NULL,
    [CREATED_BY] [nvarchar](100) NOT NULL,
    [UPDATED_ON] [datetime] NOT NULL,
    [UPDATED_BY] [nvarchar](100) NOT NULL,
 CONSTRAINT [PK_PERM] PRIMARY KEY CLUSTERED 
(
    [PER_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

错误信息

无法确定类型: NHibernate.Type.EnumStringType`1[[Abc.Repository.Domain.Classes.SecPermission.permissionType, Abc.Repository]],NHibernate,用于列: NHibernate.Mapping.Column(PERMISSION_TYPE)

【问题讨论】:

    标签: c# nhibernate orm mapping


    【解决方案1】:

    类型写错了。因为它是一个内部类型,所以必须在包含类全名后附加+

    type="NHibernate.Type.EnumStringType`1[[Abc.Repository.Domain.Classes.SecPermission+permissionType, Abc.Repository]], NHibernate"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 2014-01-10
      • 2014-02-01
      • 2014-11-29
      相关资源
      最近更新 更多