FNHを使用して、ASP.NETMVC3アプリケーションで使用されるライブラリの約30クラスのマッピングを生成しています。私はMSSQLExpress10に取り組んでいます。開発目的でデータベースにデータを入力できるようにするコードを作成しました。ただし、Accountインスタンスを保存しようとすると、次のエラーメッセージが表示されます。
System.Data.SqlTypes.SqlTypeException:SqlDateTimeオーバーフロー。1/1/175312:00:00AMから12/31/999911:59:59PMの間にある必要があります。
これは、DateTimeであるAccount.CreationDate属性が原因で発生します。私は周りを見回しましたが、MSSQLと.NETのDateTimeは実際には同じではありません。FNHマッピングを介して、列を「datetime2」にするように強制しましたが、それは役に立たなかったようです。
これは私のアカウントクラスです(簡略化):
public class Account
{
public virtual int Id { get; set; }
public virtual string Comment { get; set;}
public virtual DateTime CreationDate { get; set;}
public virtual string Email { get; set;}
public virtual string Password {get ; set;}
public virtual string Locale {get; set;}
public Account(string password, string email)
{
this.Email = email;
SetNewPassord(password);
this.CreationDate = DateTime.Now;
this.Locale = "en-US";
}
}
そしてFNHマッピング:
public class AccountMap : ClassMap<Account>
{
public AccountMap()
{
Id(x => x.Id);
Map(x => x.Comment);
Map(x => x.CreationDate);
Map(x => x.Email);
Map(x => x.Password);
Map(x => x.Locale);
}
}
そして私がこれを呼ぶコード:
var compteAdmin = new Account("test", "noone@nowhere.com");
compteAdmin.Locale = "fr-FR";
var toto = compteAdmin.CreationDate;
try
{
session.Save(compteAdmin);
}
catch (Exception ex)
{
throw new ConfigurationException("Account.CreationDate: " + compteAdmin.CreationDate.ToString() + " ; Exception: " + ex);
}
デバッグの目的で、いくつかの例外をスローしていることに注意してください。その出力は一種のシュールです!
Account.Creation date:2/6/2013 5:32:29 PM; 例外:System.Data.SqlTypes.SqlTypeException:SqlDateTimeオーバーフロー。1/1/175312:00:00AMから12/31/999911:59:59PMの間にある必要があります。