2

コードとSQ​​Lサーバー2012によるNHibernateマッピングを使用しています。セッションファクトリのドライバーとしてSql2008ClientDriverも使用しています。私は正確な sql 型と長さをテーブルを表す C# オブジェクトにマップする方法を理解しようとしています。私が得ている問題は、生成されたSQLで指定されたデータ型、特に文字列に関するものです。

例えば:

パブリック仮想文字列 SomeProperty { get; 設定; }

これは、クエリの生成時に nvarchar(4000) パラメーターに変換されますが、この列はデータベースでは char(6) です。マッピングでこれを何らかの方法で指定することは可能ですか?

クエリを実行する前にSQLサーバーが変換を行っているため、パフォーマンスが低下していると思います。

私はこれを試しました(そしてうまくいきません):http://notherdev.blogspot.com.au/2012/01/mapping-by-code-property.html

何か案は?

4

2 に答える 2

1

char(6)これは、作業フィールドになるおしゃべりなマッピングです。

Property(x => x.SomeProperty,
         pm =>
         {
             pm.Type(NHibernateUtil.AnsiString);
             pm.Length(6);
             pm.Column(cm => cm.SqlType("char(6)"));
         });

これに対するすぐに使えるサポートは、より良いものになる可能性があります。

于 2013-03-24T23:24:30.750 に答える
0

マッピング ファイルでは、次を指定できますsql-type

<property name="SomeProperty" type="String">
   <column name="ColumnName" sql-type="char(6)" />
</property>     
于 2013-03-24T23:01:04.447 に答える