「Fluent NHibernate/フルーエントマッピング/テキスト長」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator (ページの作成:「Fluent NHibernateでマッピング時にテキスト長を指定することで、データベースドライバーに応じて、データベース側(スキー...」) |
imported>Administrator (→エンティティ) |
||
2行目: | 2行目: | ||
== エンティティ == | == エンティティ == | ||
− | + | エンティティクラスの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;
関連項目
参考文献