c# - 关联引用未映射的类 (.net)

标签 c# .net nhibernate nhibernate-mapping

即使 hbm 设置为嵌入式资源,NHibernate 也会给我这个错误:

关联引用未映射的类:UploadPromotions.Models.StgedPromotionImage

映射如下:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="UploadPromotions.Models"
namespace="UploadPromotions.Models">
  <typedef
   name="blobbedItem"
   class="UploadPromotions.Models.Blobbed, UploadPromotions.Models">
    <param name="classType">Legacy.Item,Legacy</param>
  </typedef>
  <typedef
  name="blobbedSupplier"
  class="UploadPromotions.Models.Blobbed, UploadPromotions.Models">
    <param name="classType">Legacy.ItemFromSupplier,Legacy</param>
  </typedef>
  <typedef
 name="photoText"
 class="UploadPromotions.Models.Blobbed, UploadPromotions.Models">
    <param name="classType">UploadPromotions.Models.PhotoText,UploadPromotions.Models</param>
  </typedef>
  <union-subclass name="StagedPromotionImage" extends="DiskImage">
    <many-to-one name="CurrentStage" class="Stage" column="StageId" cascade="none"></many-to-one>
    <set name="Stages" table="StageForPromotionsTable" cascade="none" batch-size="20" access="field.camelcase-underscore">
      <key column="PromotionId"/>
      <many-to-many class="Stage" column="StageId"/>
    </set>
    <many-to-one name="BaseImage" class="DiskImage" column="DiskImageId"></many-to-one>
    <property name="Created"></property>
    <property name="Modified"></property>
    <property name ="Name"></property>
    <property name="From" column="FromDate" not-null="true"></property>
    <property name="To" column="ToDate" not-null="true"></property>
    <property name="Description" type="AnsiString" length="100" not-null="true"></property>
    <property name="Commited"></property>
    <property not-null="true" name ="Art" type="NHibernate.Type.EnumStringType`1[[ADAutoTotal.UploadPromotions.Models.Art,ADAutoTotal.UploadPromotions.Models]], NHibernate"></property>
    <property not-null="true" name ="Use" column="UsageType" type="NHibernate.Type.EnumStringType`1[[ADAutoTotal.UploadPromotions.Models.Use,ADAutoTotal.UploadPromotions.Models]], NHibernate"></property>
    <component name="TemplateImage" class="Template">
      <property name="TemplateName" not-null="true"></property>
      <property name="Width" not-null="true" column="TemplateWidth"></property>
      <property name="Height" not-null="true" column="TemplateHeight"></property>
    </component>
    <property name="Headline" type="photoText"></property>
    <property name="Caption" type="photoText"></property>
    <property name="Base64Url" not-null="false"></property>
    <property name="Row" column="RowNumber" not-null="true"></property>
    <property name="Position" not-null="true"></property>
    <many-to-one name="CreatedBy" class="PromotionManager" column="ManagerId" cascade="none"></many-to-one>
    <property name="Supplier" type="blobbedSupplier" not-null="false" length="1000"></property>
    <property name="Item" column="ForItem" type="blobbedItem" not-null="false" length="1000"></property>
    <many-to-one name="LastCommitedVersion" not-null="false" class="CommitedPromotionImage" column="LastCommitedVersionId"></many-to-one>
  </union-subclass>
</hibernate-mapping>

我看不出有什么问题。至于用在什么地方:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="UploadPromotions.Models"
namespace="UploadPromotions.Models">
  <class name="PromotionManager">
    .......
    <set name="StagedPromotionImages" batch-size="50" inverse="true" cascade="all-delete-orphan" access="field.camelcase-underscore">
      <key column="CreatedById"></key>
      <one-to-many class="StagedPromotionImage"/>
    </set>
  </class>
</hibernate-mapping>

这里:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="UploadPromotions.Models"
namespace="UploadPromotions.Models">
  <class name="Stage" table="StagedChanges">
  .........
    <set name="StagedImages" batch-size="50" inverse="true" cascade="all-delete-orphan" access="field.camelcase-underscore">
      <key column="StageId"></key>
      <one-to-many class="StagedPromotionImage"/>
    </set>
   ............

  </class>
</hibernate-mapping>

编辑:

好吧,我忘记在映射文件名中添加 .hbm 部分......

最佳答案

我之前也遇到过类似的问题,

我在 NH 映射文件“SomeClass..hbm.xml”中有两个点,而不是“SomeClass.hbm.xml”,我花了 4 个小时才找到它!!!

关于c# - 关联引用未映射的类 (.net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16057408/

相关文章:

c# - 以编程方式安装设备驱动程序

Nhibernate:二级集合中的不同结果

.net - 如何在另一个线程上正确地对调用 UI 方法进行单元测试?

c# - NHibernate:用于检索非空一对一关联类的条件表达式

c# - NHibernate、Fluent NHibernate 和 Iesi.Collection 问题。接下来你会尝试什么?

c# - 如何在 C# 中将默认值设置为 propertyygrid 的大小类型属性?

c# - 在 WinRT 中使用 MVVM Light Toolkit 填充文本框的进度条

c# - 错误:警告:mysqli_fetch_array()期望参数1为mysqli_result,在第15行的/var/www/html/data.php中给定的 bool 值

c# - 跨 .NET 语言性能

.NET 3.5图表控件异常: Error executing child request for ChartImg. axd