「Fluent NHibernate/フルーエントマッピング/テキスト長」の版間の差分
imported>Administrator |
imported>Administrator |
||
| 16行目: | 16行目: | ||
マッピングクラスでLengthを設定する。 | マッピングクラスでLengthを設定する。 | ||
この際に指定した数値に応じて、Fluent NHibernateが自動的にVARCHARなのかTEXT系の型なのかを設定してくれる。 | この際に指定した数値に応じて、Fluent NHibernateが自動的にVARCHARなのかTEXT系の型なのかを設定してくれる。 | ||
<source lang="csharp"> | |||
public class ForeverNoteMap : ClassMap<ForeverNote> | public class ForeverNoteMap : ClassMap<ForeverNote> | ||
{ | { | ||
| 32行目: | 34行目: | ||
} | } | ||
} | } | ||
</source> | |||
== スキーマ == | == スキーマ == | ||
2012年7月8日 (日) 09:47時点における最新版
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;
関連項目[編集 | ソースを編集]
参考文献[編集 | ソースを編集]