差分

ナビゲーションに移動 検索に移動

Fluent NHibernate/フルーエントマッピング/テキスト長

1,689 バイト追加, 2012年7月8日 (日) 09:46
ページの作成:「Fluent NHibernateでマッピング時にテキスト長を指定することで、データベースドライバーに応じて、データベース側(スキー...」
[[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となっている。
<source lang="mysql">
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;
</source>

== 関連項目 ==
* [[Fluent NHibernate]]
* [[Fluent NHibernate/フルーエントマッピング]]

== 参考文献 ==
<references/>

== 外部リンク ==

{{stub}}
匿名利用者

案内メニュー