2

これは 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 を使用してストアド プロシージャをマップするアイデアがまったくないからです。

4

0 に答える 0