これは NHibernate を使用した最初のプロジェクトであり、マッピングに問題があります。私のドメイン クラス マッピングは、FluentNhibernate 流暢なマッピングを使用して行われ、正常に動作しています。
しかし、今度はストアド プロシージャをマップする必要があります。つまり、ファイルに依存する必要がありhbm.xml
ます。だから私はNamedQueries.hbm.xml
このようなものを追加しました:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >
<sql-query name="GetLatestTrackings">
<return-scalar column="TrackingId" type="Int32" />
<![CDATA[
exec Core.GetLatestTrackings
]]>
</sql-query>
</hibernate-mapping>
流暢なマッピングは次のようになります。
FluentConfiguration configuration = Fluently
.Configure()
.Database(MsSqlConfiguration
.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("Con")))
.Mappings(m =>
{
m.HbmMappings.AddFromAssembly(assemblyWithMappings);
m.FluentMappings.AddFromAssembly(assemblyWithMappings);
});
var nhibConfig = configuration.BuildConfiguration();
SchemaMetadataUpdater.QuoteTableAndColumns(nhibConfig);
return configuration.BuildSessionFactory();
しかし、実行時に次の例外が発生します。
DuplicateMappingException、重複したクエリ/SQL クエリ マッピング GetLatestTrackings
現時点では、ストアド プロシージャの呼び出しに ADO.NET を使用することを検討しています。NHibernate を使用してストアド プロシージャをマップするアイデアがまったくないからです。