NHibernate と Fluent NHibernate の両方に不慣れで、CHAR(10)
列をNVARCHAR
.
SQL プロファイラーから:
exec sp_executesql N'select mytestclas0_.LinkId as LinkId45_,
mytestclas0_.Href as Href45_,
mytestclas0_.LinkActive as LinkActive45_
from MessageLinks mytestclas0_
where mytestclas0_.LinkId=@p0',N'@p0 nvarchar(4000)',@p0=N'BzE2T48HMF'
NHibernate からの ID が としてキャストされていることがわかりますNVARCHAR
。
テーブル定義:
CREATE TABLE [dbo].[MyTable](
[ID] [int] NULL,
[Href] [nvarchar](1000) NULL,
[LinkActive] [bit] NOT NULL,
[LinkId] [char](10) NOT NULL
)
クラスファイル:
public class MyTestClass {
public MyTestClass() {}
public virtual string LinkId{ get; set; }
public virtual string Href{ get; set; }
public virtual bool LinkActive { get; set; }
}
マッピング ファイル:
public class MyTestClassMapping : ClassMap<MyTestClass> {
public MyTestClassMapping() {
Table("MyTable");
Id(x => x.LinkId).Length(10);
Map(x => x.LinkId);
Map(x => x.Href);
Map(x => x.LinkActive);
}
}
これらのマッピングを含む、LinkId のデータ型とマッピング ファイルを使用して、さまざまなことを試しました。
Id(x => x.LinkId).CustomSqlType("char(10)");
Id(x => x.LinkId).Length(10).CustomSqlType("char");
Id(x => x.LinkId).CustomSqlType("char");
NHibernate によって渡された ID を にキャストする方法を説明する例またはドキュメントへのポインターを探していますCHAR(10)
。
助けてくれてありがとう。