2013-11-29 3 views
0

У меня есть таблица базы данных, в которой один из столбцов имеет значение NULL. Я хочу сохранить объект через сопоставление NHibernate, которое сохраняет значение по умолчанию в случае, если член сущности является нулевым. Entity:Сохранение значения по умолчанию через сопоставление NHibernate

public class Person 
    { 
    public virtual int PersonId { get; set; } 
    public virtual string Name { get; set; } 
    public virtual int ?Age { get; set; } 
    } 

Person.hbm.xml файл:

Теперь, когда я пытаюсь сохранить объект с нулевым значением для имени и Age, я хочу, чтобы значение по умолчанию сохранялось в таблице базы данных. Есть ли способ для этого? Пожалуйста, ответьте ..

+0

Вы подделали xml-файл? – Qben

ответ

1

Да, есть очень простой путь к нему

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; } 
} 
1

У вас есть два способа для вставки значения по умолчанию.

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"); 
     ... 

Как вы можете видеть, вы должны определить значения в SQL нотации ! В противном случае nhibernate будет вызывать некоторые исключения, создавая схему ...

Это также работает для нулевых столбцов, конечно.

b) Просто используйте конструктор вашей организации.

Смежные вопросы