2013-03-02 54 views
0

因此,我在NHibernate 3.0中使用我的xml文件进行映射时出错。我有一个MediaContent类,我试图绘制出来并且遇到问题。我知道它与我的xml映射有关,因为映射没有显示在我的配置中。使用枚举映射NHibernate 3类时出错

这里是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一起工作,但据我所知,事情应该没问题。

回答

0

你有无数的问题在这里:

  1. 它看起来像的MediaType和ContentAccessibility是具体的类,所以你需要一些参考映射。它们不是属性,因为这通常是为像字符串,整数,日期等原始属性保留的。

  2. 至少有一个属性是对象类型,您无法简单映射为属性。我最近遇到了这种情况,发现将它映射为字符串比较容易,然后将其转换为域中的适当的东西(guid,date等)。

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