首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用枚举映射NHibernate 3类时出错

使用枚举映射NHibernate 3类时出错
EN

Stack Overflow用户
提问于 2013-03-02 08:44:02
回答 1查看 210关注 0票数 0

因此,我在NHibernate 3.0中映射我的xml文件时遇到错误。我有一个MediaContent类,我正在尝试映射它,但遇到了问题。我知道这与我的xml映射有关,因为该映射没有显示在我的配置中。

下面是MediaContent类(枚举是ContentAccessibility和MediaTypes):

代码语言:javascript
运行
复制
public class MediaContent:IMediaContent,ICreatedAndModified, IActive, IArchived
{
    #region Properties/Members
    public int MediaContentID { get; set; }
    public string Name { get; set; }
    public string FileName { get; set; }
    public ContentAccessibility Accessibility { get; set; }
    public MediaTypes MediaType { get; set; }
    public object Media { get; set; }
    public Dictionary<string, object> MediaProperties { get; set; }
    public string Author { get; set; }
    public string InternalIdentifier { get; set; }
    public string CreatedBy { get; private set; }
    public DateTime? CreatedOn { get; private set; }
    public string LastModifiedBy { get; private set; }
    public DateTime? LastModifiedOn { get; private set; }
    public string ComplianceCode { get; private set; }

    public bool IsActive { get; private set; }
    public bool Archived { get; private set; }
    #endregion


    #region Methods
    public void Create(DateTime createdOn, string createdBy)
    {
        CreatedOn = createdOn;
        CreatedBy = createdBy;
    }
    public void Modified(DateTime modifiedOn, string modifiedBy)
    {
        LastModifiedBy = modifiedBy;
        LastModifiedOn = modifiedOn;
    }
    #endregion


}

下面是MediaContent.hbm.xml文件:

代码语言:javascript
运行
复制
    <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                                     assembly="Domain"
                                     namespace="Domain.Models">

  <class name="MediaContent" lazy="false" table="MediaContent">
    <!-- Identity Mapping-->
    <id name="MediaContentID">
      <column name="MediaContentID" />
      <generator class="native" />
    </id>

    <!-- Simple Property Mappings-->    
    <property name="Name" />
    <property name="FileName" />
    <property name="Accessibility" />
    <property name="MediaType" />
    <property name="Media" />
    <property name="Author" />
    <property name="InternalIdentifier" />
    <property name="ComplianceCode" />
    <property name="CreatedBy" />
    <property name="CreatedOn" />
    <property name="LastModifiedBy" />
    <property name="LastModifiedOn" />    
    <property name="IsActive" />
    <property name="Archived" />  

  </class>
</hibernate-mapping>

可能是我忽略了NHibernate是如何工作的,但据我所知,除此之外一切都应该很好。

EN

回答 1

Stack Overflow用户

发布于 2013-03-05 23:55:37

你在这里有无数的问题:

  1. 看起来MediaType和ContentAccessibility是具体的类,所以你需要某种引用映射。它们不是属性,因为这通常是为基本属性保留的,如字符串、整数、日期等。
  2. 至少有一个属性是对象类型,您不能简单地将其映射为属性。我最近遇到过这种情况,发现将其映射为字符串,然后将其转换为域中的适当内容(guid、日期等)会更容易。

我不太记得HBM,但您可能还需要一些东西来表明DateTime属性可以为空。如果我是你,我会通过代码查看NH映射。

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

https://stackoverflow.com/questions/15169315

复制
相关文章

相似问题

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