2012-03-15 7 views
0

を生成します。私のコードではNHibernateはRestrictions.Ge( "ColumnNameに"、DateTime.Nowは)私はDateTime列のため、このようなマッピングが無効なSQL

... 
Map(x => x.Created).Column("CREATED") 
        .Access.Property() 
        .CustomType<DateTime>() 
        .CustomSqlType("datetime") 
        .Not.Nullable(); 
... 

私は

outboxCriteria.Add(Restrictions.Eq("Created", startDate)); 

場所を定義します'startDate'はDateTime型です。

私は正しくありません上記の基準

... 
    and Created = 2/14/2012 12:00:00 AM 
... 

を参照作成したSQLを見ています。私はNHibernateが作成することを期待するでしょう

... 
    and Created = '2/14/2012 12:00:00 AM' 
... 

私はまた、String型と同じ問題を観察しました。

Map(x => x.ReceiverName).Column("UserName") 
         .CustomType("string") 
         .Access.Property() 
         .CustomSqlType("nvarchar(256)") 
         .Nullable() 
         .Length(256); 

結果のSQLは、引用符で文字列を入れていません:

... 
    and UserName = Paul 
... 

代わりの

... 
    and UserName = 'Paul' 
... 

マッピングは、これらの問題を除いて非常によく動作します。

私は間違っていますか?

+0

'.CustomType ()'を削除するとどうなりますか? – Rippo

+0

@Rippo同じ結果... – Andreas

答えて

1

.CustomSqlType("nvarchar(256)")を指定すると、noopにLength()が表示されます。また、stringとdatetimeはcustomeTypes/customSqlTypesではありません。多分NHibernateはそれらによって混乱しているでしょう。

Map(x => x.ReceiverName).Column("UserName").Length(256)以外はすべて削除してください。

関連する問題