我使用FluentNHibernate设置了我的第一个项目。当我试图从单个表中获取记录列表时,我得到一个例外,其中说:
System.FormatException:String未被识别为有效的布尔值。
问题是在数据库表中,有一个名为“flag”的列,其数据类型为char,但它只包含“0”或“1”的值。所以,我想把它映射到我的POCO中的bool类型:
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;}
}
现在,在我的Mappings.cs中,如何将Flag转换为bool?
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,如果重要的话。
感谢您的提示。
答案 0 :(得分:3)
对于第1部分,在app.config / nhibernate.config / whateverYourNHibernateConfigFile上使用它
<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);
答案 1 :(得分:2)
对于第1部分,在配置对象中,需要将query.substitutions属性设置为true = 1,false = 0。
对于第2部分,应该有一个Table(“”)方法,您可以使用它来指定StudentMap类中的表名。