簡體   English   中英

使用枚舉映射NHibernate 3類時出錯

[英]Error when mapping an NHibernate 3 class with enums

因此,我在NHibernate 3.0中使用xml文件映射時遇到錯誤。 我有一個MediaContent類,我正在嘗試繪制該類並遇到問題。 我知道它與xml映射有關,因為該映射未顯示在我的配置中。

這是MediaContent類(枚舉是ContentAccessibility和MediaTypes):

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文件:

    <?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的工作方式,但是據我所知,否則應該沒問題。

您這里有許多問題:

  1. 看起來MediaType和ContentAccessibility是具體的類,因此您需要某種類型的引用映射。 它們不是屬性,因為通常保留給諸如字符串,整數,日期等原始屬性。

  2. 屬性中至少有一個是對象類型,您不能簡單地將其映射為屬性。 我最近剛遇到這種情況,發現將它映射為字符串然后將其轉換為域上的正確內容(GUID,日期等)更加容易。

我不太記得HBM,但您可能還需要一些信息來指示DateTime屬性可以為空。 如果是我,我會通過代碼研究NH映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM