Nhibernate: QuerySyntaxException: 'Class' 未映射

标签 nhibernate

我有以下类(class):

public class MyClass
{
    private List<long> _myList = new List<long>();

    public virtual string MyID { get; set; }

    public virtual string MyData
    {
        get
        {
            return SomeStaticClass.Serialize(_myList);
        }
        set
        {
            _myList = SomeStaticClass.Deserialize<List<long>>(value);
        }
    }

    public virtual List<long> MyList
    {
        get { return _myList; }
    }
}

以及以下映射文件:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
               assembly="MyNamespace"
               namespace="MyNamespace">
  <class name="MyNamespace.MyClass" table="MY_TABLE">
    <id name="MyID" column="MY_ID" type="System.String">
      <generator class="assigned"></generator>
    </id>
    <property name="MyData" column="MY_DATA"></property>
  </class>
</hibernate-mapping>

当我尝试运行以下行时:
session.Delete("From MyClass m");

我收到一个带有消息“MyClass 未映射 [From MyClass s]”的 QuerySyntaxException。

当我在映射文件中将“MyID”字段的名称更改为“ID”时,异常变为

NHibernate.PropertyNotFoundException:在类“MyNamespace.MyClass”中找不到属性“ID”的getter。

所以我假设它可以找到映射文件。我确保映射文件是嵌入式资源,检查并双重检查映射文件中的命名空间和类名。什么可能导致错误?我认为这可能与未映射的 MyList 属性有关,但我不确定,因为我在其他类上使用非映射属性没有问题。

编辑:我尝试用一​​个没有“MyData”属性的类覆盖这个类,并将“MyList”属性重新定义为字符串。对于我的重写类,我仍然收到相同的错误。

编辑 2:尝试了一个非常简单的类,具有相同的属性名称和相同的返回类型,并且只有简单的获取;放;块。我仍然遇到同样的错误。我几乎可以肯定 nhibernate 可以看到我的映射文件,因为如果我更改单个属性的名称,它会给我 PropertyNotFound 而不是“未映射的类”。

最佳答案

你是如何加载 hbms 的?如果它们是资源,请确保您已将文件实际设置为 Visual Studio 中的嵌入资源

关于Nhibernate: QuerySyntaxException: 'Class' 未映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149851/

相关文章:

nhibernate 查询 SubQueryExpression

NHibernate 使用过滤器选择最大值

java - Hibernate 返回 session 中的值,而不是从数据库中返回值

nhibernate - 如何在 Expression.Or 中设置 2 个以上的表达式

c# - "An invalid or incomplete configuration was used while creating a SessionFactory"Web 服务中的 NHibernate

c# - NHibernate 聚合子查询

c# - 如何将属性值转换合并到 NHibernate QueryOver .SelectList 中?

c# - 以 'other' 方式映射 nhibernate 父/子关系

NHibernate 防止级联删除

c# - Fluent NHibernate NonUniqueObjectException