FluentNHibernate: Как сопоставить символ базы данных с C # Bool? - PullRequest
0 голосов
/ 13 сентября 2011

Я создал свой первый проект, используя FluentNHibernate. Когда я пытался получить список записей из одной таблицы, я получил исключение, которое говорит:

System.FormatException: строка не была распознана как допустимое логическое значение.

Проблема в том, что в таблице базы данных есть столбец с именем "flag", а его тип данных - char, но он содержит только значения '0' или '1'. Итак, я хотел бы сопоставить его с типом bool в моем POCO:

public class Students
{
    public virtual int Id {get; private set;}
    public virtual string FirstName {get; set;}
    public virtual string LastName {get; set;}
    public virtual DateTime RegisterDate {get; set;}
    public virtual bool Flag {get; set;}
}

Теперь, как мне конвертировать Flag в bool в моем Mappings.cs?

public class StudentMap : ClassMap<Students> {
    public StudentMap() {
        Id(x => x.Id);
        Map(x => x.FirstName).Column("first_name");
        Map(x => x.LastName).Column("last_name");
        Map(x => x.RegisterDate).Column("register_date");
        Map(x => x.Flag); // This won't work because 
                          // column "flag" is char, 
                          // whereas x.Flag is bool.

        }
    }

Это вопрос 1.

Кроме того, в базе данных имя таблицы «студенты», но в моей бизнес-модели я хочу использовать единственное число в качестве Студент , как я могу это сделать? Прямо сейчас, если я определю свой бизнес-класс как «Студент», я получу ошибку, в которой говорится, что что-то вроде таблицы «студент» не найдено.

База данных MySQL, если это имеет значение.

Спасибо за подсказку.

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Для первой части используйте это в вашем app.config / nhibernate.config / whatYourNHibernateConfigFile

<property name="query.substitutions">true 1, false 0</property>

Редактировать после комментария:

Если вы используете свободный nhibernate, просто используетAPI, пример

            var props = new Dictionary<string, string>();
            props.Add("query.substitutions","true 1, false 0");
            var sessionFactory = Fluently.Configure().BuildConfiguration().AddProperties(props);
2 голосов
/ 13 сентября 2011

Для части 1 в вашем объекте конфигурации вам нужно установить для свойства query.substitutions значение true = 1, false = 0.

Для части 2 должен существовать метод Table (""), который можно использовать для указания имени таблицы в классе StudentMap.

...