2011-09-13 9 views
0

FluentNHibernateを使用して私の最初のプロジェクトをセットアップしました。 1つのテーブルからレコードのリストを取得しようとすると、次のような例外が発生しました。FluentNHibernate:データベースのcharをc#boolにマップする方法は?

System.FormatException:文字列が有効なブール値として認識されませんでした。

データベーステーブルには、 "flag"という列があり、そのデータ型はcharですが、値は「0」または「1」のみです。だから、私は私の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;} 
} 

、私のMappings.csで、どのように私はBOOLにフラグを変換するのですか?質問1.

はまた、データベースで、テーブル名が「学生」ですが、私のビジネスモデルでは、私が学生として単数形を使用したい、私はどのように行うことができます

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. 

     } 
    } 

この?今、ビジネスクラスをStudentとして定義すると、 "student"というテーブルが見つからないというエラーが表示されます。

データベースはMySQLの場合は重要です。

ヒントをお寄せいただきありがとうございます。

答えて

3

はパート1については、コメントの後にあなたのapp.config/nhibernate.config/whateverYourNHibernateConfigFile

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

編集にこれを使用します

  var props = new Dictionary<string, string>(); 
      props.Add("query.substitutions","true 1, false 0"); 
      var sessionFactory = Fluently.Configure().BuildConfiguration().AddProperties(props); 
+0

これはFluentNHibernateについてですが、XMLのようなものはありません。私は、NHibernateのXML設定で示したようなプロパティノード情報を見つけました。 – Stack0verflow

+0

flunt nhibernateを使用してこの設定を追加するように編集しました –

+0

少し遅れましたが、ありがとうございます。 – Stack0verflow

2

パート1の場合、構成オブジェクトでは、query.substitutionsプロパティをtrue = 1、false = 0に設定する必要があります。

パート2では、StudentMapクラスのテーブル名を指定するために使用できるTable( "")メソッドが必要です。

あなたが流暢NHibernateはを使用している場合は、単にそのAPI、例を使用しています。

+1

ヒントありがとうございます。例ははるかに良い助けになるでしょう。私はパート2のヒントを理解しました。同じ情報を探している人は、MappingクラスのTableメソッドへの呼び出しを追加するだけです。例: public class StudentMap:ClassMap { public StudentMap(){ テーブル( "students"); Id(x => x.Id); ... } } ' しかし、私は第1部のヒントを理解することはできません。私は周りを探索しましたが、役に立たないものは見つかりませんでした。 – Stack0verflow

関連する問題