通过NHibernate映射保存默认值
我有一个数据库表,其中一列可以为null。我想通过NHibernate映射保存一个实体,当实体成员为null时,它会保存一些默认值。 实体: Person.hbm.xml文件:通过NHibernate映射保存默认值,nhibernate,Nhibernate,我有一个数据库表,其中一列可以为null。我想通过NHibernate映射保存一个实体,当实体成员为null时,它会保存一些默认值。 实体: Person.hbm.xml文件: 现在,当我试图用null值保存实体的Name和Age时,我希望将默认值保存在数据库表中。有什么办法吗?请回答。是的,有一个非常简单的方法 public class Person { public Person(){ Age = 15; // default value } p
现在,当我试图用null值保存实体的Name和Age时,我希望将默认值保存在数据库表中。有什么办法吗?请回答。是的,有一个非常简单的方法
public class Person
{
public Person(){
Age = 15; // default value
}
public virtual int PersonId { get; set; }
public virtual string Name { get; set; }
public virtual int Age { get; set; }
}
有两种方法可以插入默认值 a)在数据库级别定义它。这将在表上添加一个插入默认值的约束。如果从映射中生成架构或在数据库脚本中定义它,则可以通过映射来完成此操作 在映射中,您必须做的唯一重要的事情是指示nhibernate不要尝试为空属性插入空值 这可以通过为映射设置
DynamicInsert
来实现。
如果您希望具有相同的更新机制,还可以定义DynamicUpdate
以下是fluent nhibernate的一些示例:
public class SomeMap : ClassMap<Something>
public PostMap()
{
...
DynamicInsert();
Map(p => p.StringProperty).Default("N'something'");
Map(p => p.SomeInt).Default("1");
...
公共类SomeMap:ClassMap
公共邮戳(
{
...
DynamicInsert();
Map(p=>p.StringProperty).Default(“N'something'”);
Map(p=>p.SomeInt).Default(“1”);
...
正如您所见,您必须用SQL表示法定义值!否则nhibernate将抛出一些创建模式的异常
当然,这也适用于可为空的列
b)只需使用实体的构造函数。您伪造了xml文件吗?
public class SomeMap : ClassMap<Something>
public PostMap()
{
...
DynamicInsert();
Map(p => p.StringProperty).Default("N'something'");
Map(p => p.SomeInt).Default("1");
...