「Fluent NHibernate/フルーエントマッピング/テキスト長」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
(ページの作成:「Fluent NHibernateでマッピング時にテキスト長を指定することで、データベースドライバーに応じて、データベース側(スキー...」)
 
imported>Administrator
2行目: 2行目:
  
 
== エンティティ ==
 
== エンティティ ==
エンティティクラスのNameとNoteはどちらも至って普通のstring型。
+
エンティティクラスのNameプロパティとNoteプロパティはどちらも至って普通のstring型。
 +
 
 +
<source lang="csharp">
 
public class ForeverNote
 
public class ForeverNote
 
{
 
{
9行目: 11行目:
 
     public virtual string Note { get; set; }
 
     public virtual string Note { get; set; }
 
}
 
}
 +
</source>
  
 
== マッピング ==
 
== マッピング ==

2012年7月8日 (日) 09:46時点における版

Fluent NHibernateでマッピング時にテキスト長を指定することで、データベースドライバーに応じて、データベース側(スキーマ)におけるテキスト系の型は自動的に決定される。

エンティティ

エンティティクラスのNameプロパティとNoteプロパティはどちらも至って普通のstring型。

public class ForeverNote
{
    public virtual long Id { get; protected set; }
    public virtual string Name { get; set; }
    public virtual string Note { get; set; }
}

マッピング

マッピングクラスでLengthを設定する。 この際に指定した数値に応じて、Fluent NHibernateが自動的にVARCHARなのかTEXT系の型なのかを設定してくれる。 public class ForeverNoteMap : ClassMap<ForeverNote> {

   public ForeverNoteMap()
   {
       Id(x => x.Id)
           .GeneratedBy.Identity();
       Map(x => x.Name)
           .Not.Nullable()
           .Length(255);
       Map(x => x.Note)
           .Not.Nullable()
           .Length(1048576);
   }

}

スキーマ

Fluent NHibernateのデータベースドライバーをMySQLにして実行した結果できあがるスキーマは以下のような感じになる。 長さ255はVARCHAR、長さ1048576はMEDIUMTEXTとなっている。

CREATE TABLE ForeverNote (
  Id bigint(20) NOT NULL AUTO_INCREMENT,
  Name varchar(255) NOT NULL,
  Note mediumtext NOT NULL,
  PRIMARY KEY (Id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

関連項目

参考文献


外部リンク