0

我以为我知道我在 NHibernate 周围的方式,但我一定是在做一些愚蠢的事情。我有一个名为 Category 的表/类。当我从我的 GetAll 方法中提取数据时,没有任何返回,但也没有错误。

课程是:

namespace Model
{
    [Serializable]
    public partial class Category
    {
        public virtual int Id { get; set; }
        public virtual DateTime CreatedOn { get; set; }
        public virtual DateTime UpdatedOn { get; set; }

        public virtual string Name { get; set; }

        public override bool Equals(object oneObject)
        {
            return oneObject is Category && (this.GetHashCode() == ((Category)oneObject).GetHashCode());
        }

        public override int GetHashCode()
        {
            return Id.ToString().GetHashCode();
        }

    }
}

映射文件:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" namespace="Model" assembly="Model" xmlns="urn:nhibernate-mapping-2.2">
    <class name="Category" lazy="true" table="`categories`"><!--test only!!-->
        <id name="Id" access="property" column="`category_id`">
            <generator class="native" />
        </id>
    <property name="Name" column="`name`" length="50" />
    </class>
</hibernate-mapping>

如果我在另一个表中添加多对一引用,则会出错:An association from the table manufacturer_categories refers to an unmapped class: Model.Category

在我看来,NHibernate 无法识别我的映射文件似乎很明显。我错过了什么愚蠢的事情?

4

2 回答 2

2

使用类的全限定名,可以解决问题

<class name="Modle.Category" lazy="true" table="`categories`">

还要确保在配置 Nhibernate 时添加了包含类别映射文件的程序集

Configuration cfg = new Configuration();
cfg.Configure();

// Add class mappings to configuration object
Assembly mappingAssembly = AssemblyContatingTheCategoryMappingXMLFile;
cfg.AddAssembly(mappingAssembly);

另一个提示是将 xml 文件设置为Embedded Resource属性选项卡

于 2013-05-06T20:45:35.480 回答
1

您是否检查过您的 XML 文件是否被标记为嵌入式资源?

在此处输入图像描述

于 2013-05-07T14:14:11.883 回答