差分
[[Fluent NHibernate]]と[[MySQL]]の組み合わせでは、[[C Sharp|C#]]の列挙型は文字列扱いとなる。
== エンティティ ==
<source lang="csharp">
// 列挙型
public enum Level
{
User = 1,
PowerUser,
Administrator,
God,
}
// エンティティ
public class User
{
public virtual long Id { get; protected set; }
public virtual Level Level { get; set; }
}
</source>
== マッピング ==
//
<source lang="csharp">
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Level);
}
}
</source>
== スキーマ ==
<source lang="csharp">
CREATE TABLE User (
Id bigint(20) NOT NULL AUTO_INCREMENT,
Level varchar(255) DEFAULT NULL,
PRIMARY KEY (Id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</source>
== 備考 ==
列挙型の範囲外の値を指定してもエラーにはならず、数字が文字列として格納される。
<source lang="csharp">
using (var session = factory.OpenSession())
using (var transaction = session.BeginTransaction())
{
// Level列挙型は1~4までだが、0と5を指定してみる。
// エラーにはならない。
for (int i = 0; i <= 5; i++)
{
var user = new User();
user.Level = (Level)i;
session.SaveOrUpdate(user);
}
transaction.Commit();
}
</source>
== 解決策 ==
知らん。
{{stub}}
== 関連項目 ==
* [[Fluent NHibernate]]
* [[Fluent NHibernate/フルーエントマッピング]]
== 参考文献 ==
<references/>
== 外部リンク ==
{{stub}}
== エンティティ ==
<source lang="csharp">
// 列挙型
public enum Level
{
User = 1,
PowerUser,
Administrator,
God,
}
// エンティティ
public class User
{
public virtual long Id { get; protected set; }
public virtual Level Level { get; set; }
}
</source>
== マッピング ==
//
<source lang="csharp">
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Level);
}
}
</source>
== スキーマ ==
<source lang="csharp">
CREATE TABLE User (
Id bigint(20) NOT NULL AUTO_INCREMENT,
Level varchar(255) DEFAULT NULL,
PRIMARY KEY (Id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</source>
== 備考 ==
列挙型の範囲外の値を指定してもエラーにはならず、数字が文字列として格納される。
<source lang="csharp">
using (var session = factory.OpenSession())
using (var transaction = session.BeginTransaction())
{
// Level列挙型は1~4までだが、0と5を指定してみる。
// エラーにはならない。
for (int i = 0; i <= 5; i++)
{
var user = new User();
user.Level = (Level)i;
session.SaveOrUpdate(user);
}
transaction.Commit();
}
</source>
== 解決策 ==
知らん。
{{stub}}
== 関連項目 ==
* [[Fluent NHibernate]]
* [[Fluent NHibernate/フルーエントマッピング]]
== 参考文献 ==
<references/>
== 外部リンク ==
{{stub}}