C# nhibernate中的默认值

C# nhibernate中的默认值,c#,nhibernate,default-value,C#,Nhibernate,Default Value,我需要设置som默认值,我分别有以下类和映射 Farmacia.cs public class Farmacia { public virtual int Id { get; protected set; } public virtual string Nombre { get; set; } public virtual string Direccion { get; set; } public virtual string Telefono { get; se

我需要设置som默认值,我分别有以下类和映射

Farmacia.cs

public class Farmacia
{
    public virtual int Id { get; protected set; }
    public virtual string Nombre { get; set; }
    public virtual string Direccion { get; set; }
    public virtual string Telefono { get; set; }
    public virtual int CodigoPostal { get; set; }
    public virtual int Estado { get; set; }

    public Farmacia()
    {
    }
}
Farmacia.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                  assembly="Domain"
                  namespace="Domain">
  <class name="Farmacia" table="farmacias">
    <id name="Id" column="idFarmacia" type="int">
      <generator class="assigned" />
    </id>
    <property name="Nombre" />
    <property name="Direccion" />
    <property name="CodigoPostal">
      <column name="codPostal" default="1"/>
    </property>
    <property name="Telefono" />
    <property name ="Estado">
      <column name="estado" default="1" />
    </property>
  </class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                  assembly="Domain"
                  namespace="Domain">
  <class name="Farmacia" table="farmacias">
    <id name="Id" column="idFarmacia" type="int">
      <generator class="assigned" />
    </id>
    <property name="Nombre" />
    <property name="Direccion" />
    <property name="CodigoPostal" column="codPostal" />   // Property changed.
    <property name="Telefono" />
    <property name ="Estado" />                           // Property changed.
  </class>
</hibernate-mapping>
我得到一个异常,它不能在数据库中插入

另一方面,如果我对代码做了一些更改(见下文),我可以保存它

public class Farmacia
{
    public virtual int Id { get; protected set; }
    public virtual string Nombre { get; set; }
    public virtual string Direccion { get; set; }
    public virtual string Telefono { get; set; }
    public virtual int CodigoPostal { get; set; }
    public virtual int Estado { get; set; }

    public Farmacia()
    {
        Estado = 1;          // New line.
        CodigoPosta = 1;     // New line.
    }
}
Farmacia.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                  assembly="Domain"
                  namespace="Domain">
  <class name="Farmacia" table="farmacias">
    <id name="Id" column="idFarmacia" type="int">
      <generator class="assigned" />
    </id>
    <property name="Nombre" />
    <property name="Direccion" />
    <property name="CodigoPostal">
      <column name="codPostal" default="1"/>
    </property>
    <property name="Telefono" />
    <property name ="Estado">
      <column name="estado" default="1" />
    </property>
  </class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                  assembly="Domain"
                  namespace="Domain">
  <class name="Farmacia" table="farmacias">
    <id name="Id" column="idFarmacia" type="int">
      <generator class="assigned" />
    </id>
    <property name="Nombre" />
    <property name="Direccion" />
    <property name="CodigoPostal" column="codPostal" />   // Property changed.
    <property name="Telefono" />
    <property name ="Estado" />                           // Property changed.
  </class>
</hibernate-mapping>

//财产发生了变化。
//财产发生了变化。
我的问题是,只有当对象是新的时,我才需要默认值。如果对象已经在数据库中,则数据库中的对象总是在
Estado
codigomposal
中具有一些值

我在数据库中指定了默认值,但错误仍然存在。
那么,如果值为null(对象是新的),我如何设置默认值呢?

在我看来,您通过将默认值放入构造函数所做的工作很好,但如果您正在寻找其他方法,您可能可以使用类似以下内容:

(7) 动态更新(可选,默认为false):指定 更新SQL应该在运行时生成,并且只包含那些 值已更改的列

(8) 动态插入(可选,默认为false):指定 插入SQL应该在运行时生成,并且只包含列 其值不为空

以上是从这里拍摄的:

对于整型列,您能够使用数据库默认值的唯一方法是使其为空,并使用
动态插入
,因为整型列的默认值为0

public class Farmacia
{
    public virtual int Id { get; protected set; }
    public virtual string Nombre { get; set; }
    public virtual string Direccion { get; set; }
    public virtual string Telefono { get; set; }
    public virtual int? CodigoPostal { get; set; }
    public virtual int? Estado { get; set; }

    public Farmacia()
    {

    }
}

在我看来,您通过将默认值放入构造函数所做的一切都很好,但如果您正在寻找另一种方法,您可能可以使用以下内容:

(7) 动态更新(可选,默认为false):指定 更新SQL应该在运行时生成,并且只包含那些 值已更改的列

(8) 动态插入(可选,默认为false):指定 插入SQL应该在运行时生成,并且只包含列 其值不为空

以上是从这里拍摄的:

对于整型列,您能够使用数据库默认值的唯一方法是使其为空,并使用
动态插入
,因为整型列的默认值为0

public class Farmacia
{
    public virtual int Id { get; protected set; }
    public virtual string Nombre { get; set; }
    public virtual string Direccion { get; set; }
    public virtual string Telefono { get; set; }
    public virtual int? CodigoPostal { get; set; }
    public virtual int? Estado { get; set; }

    public Farmacia()
    {

    }
}

你犯了什么错误?你犯了什么错误?