所以我在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的工作原理,但据我所知,事情应该没问题。
答案 0 :(得分:0)
这里有很多问题:
看起来MediaType和ContentAccessibility是具体类,因此您需要某种参考映射。它们不是属性,因为它通常保留给原始属性,如字符串,整数,日期等。
至少有一个属性是对象类型,您不能简单地将其映射为属性。我最近才出现这种情况,并发现将其映射为字符串然后将其转换为域上正确的内容(guid,date等)更容易。
我不完全记得HBM,但您可能还需要一些东西来表明DateTime属性可以为空。如果我是你,我会通过代码查看NH映射。