【问题标题】:nhibernate subclass - zero guid in not used column instead of nullnhibernate 子类 - 未使用列中的零 guid 而不是 null
【发布时间】:2013-10-24 14:13:32
【问题描述】:

我对使用相同表和相同字段的两个子类有疑问。即使生成的表将此字段作为可为空的唯一标识符,当我保存不使用第三列的一条记录时,创建的字段的值为“000000000-0000-0000-0000-000000000000”而不是 NULL。应用程序的其他部分要求此位置为空。这是代码。怎么了?

   <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       assembly=".."
                       namespace="...">
      <class name="TEST" table="..." discriminator-value="not null">
        <id name="Id" column="tID">
          <generator class="assigned" />
        </id>
        <discriminator column="iTestTypeID" type="Int32" not-null="true"/>

        <property name="TotalScore" column="fTotalScore"/>
        <property name="IsTimedOut" column="bTimedOut"/>
    </hibernate-mapping>


<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly=".."
                   namespace="...">
  <subclass name="TestA" extends="TEST" discriminator-value="3">
    <many-to-one name="Department" column="uTestCriteria01" cascade="save-update" not-null="false" />
    <many-to-one name="Building" column="uTestCriteria02" cascade="save-update" not-null="false" />
  </subclass>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly=".."
                   namespace="...">
  <subclass name="TestB" extends="TEST" discriminator-value="3">
    <many-to-one name="Building" column="uTestCriteria01" cascade="save-update" not-null="false" />
    <many-to-one name="Floor" column="uTestCriteria02" cascade="save-update" not-null="false" />
    <many-to-one name="Room" column="uTestCriteria03" cascade="save-update" not-null="false" />
  </subclass>
</hibernate-mapping>

【问题讨论】:

    标签: c# nhibernate mapping subclass hbm


    【解决方案1】:

    我的猜测是您的对象没有使用可空类型。

    你有这样定义的类型吗:

    public class A
    {
        public Guid? field { get; set; }
    }
    

    查看这篇 StackOverflow 文章以获得解释:
    How can I default a parameter to Guid.Empty in C#?

    此外,在您的问题中,我会列出您正在谈论的特定字段,以免混淆,并发布与此映射相关的对象的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      相关资源
      最近更新 更多