Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过NHibernate映射保存默认值_Nhibernate - Fatal编程技术网

通过NHibernate映射保存默认值

通过NHibernate映射保存默认值,nhibernate,Nhibernate,我有一个数据库表,其中一列可以为null。我想通过NHibernate映射保存一个实体,当实体成员为null时,它会保存一些默认值。 实体: Person.hbm.xml文件: 现在,当我试图用null值保存实体的Name和Age时,我希望将默认值保存在数据库表中。有什么办法吗?请回答。是的,有一个非常简单的方法 public class Person { public Person(){ Age = 15; // default value } p

我有一个数据库表,其中一列可以为null。我想通过NHibernate映射保存一个实体,当实体成员为null时,它会保存一些默认值。 实体:

Person.hbm.xml文件:


现在,当我试图用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");
         ...