这是我第一个使用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-query映射 GetLatestTrackings
目前我正在考虑转向使用ADO.NET进行存储过程调用,因为我完全不想通过NHibernate映射它们。