いくつかのデフォルト値を設定する必要があり、それぞれ次のクラスとマッピングがあります。
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>
テスト
Domain.Farmacia f = new Domain.Farmacia { Nombre = "Test" };
Session.Save(f);
Session.Flush();
そして、データベースに挿入できないという例外が発生します。
一方、コードにいくつかの変更を加えた場合 (以下を参照)、それを保存できます。
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="codPostal" /> // Property changed.
<property name="Telefono" />
<property name ="Estado" /> // Property changed.
</class>
</hibernate-mapping>
私の問題は、オブジェクトが新しい場合にのみデフォルト値が必要なことです。オブジェクトが既にデータベース上にある場合、データベースからのオブジェクトは常に と にいくつかの値をEstado
持ちCodigoPostal
ます。
PD: データベースにデフォルト値を割り当てましたが、エラーが続きます。では、値が null (オブジェクトが新しい) の場合、どのようにデフォルト値を設定できますか?