gpt4 book ai didi

c# - LocalSessionFactoryObject - MappingResources - hbm 文件的路径

转载 作者:行者123 更新时间:2023-11-30 22:30:14 24 4
gpt4 key购买 nike

项目结构是:

enter image description here

现在我正在尝试创建一个 bean NHibernateSessionFactory 作为:

<object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate32">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingResources">
<list>
<value>EMSApplication.Domain/EMSApplication.hbm.xml</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<entry key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
<entry key="proxyfactory.factory_class" value="NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate"/>
<entry key="show_sql" value="true"/>
<entry key="hbm2ddl.auto" value="update"/>
<entry key="cache.use_query_cache" value="true"/>
</dictionary>
</property>

<property name="ExposeTransactionAwareSessionFactory" value="true" />
</object>

但我收到错误信息:

Error creating context 'spring.root': file [C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\EMSApplication.Domain\EMSApplication.hbm.xml] cannot be resolved to local file path - resource does not use 'file:' protocol.

现在项目在D盘,我想知道为什么这是指向C盘?

另外,如何在映射资源中添加指定的 hbm 文件?此文件设置为“嵌入式资源”。

有没有办法在这里指定一个目录来扫描多个hbm文件?

任何信息都会对我很有帮助。

最佳答案

您没有在资源名称中使用协议(protocol)标识符(例如 file://assembly:// ),因此 Spring 使用默认文件协议(protocol)。它尝试从 Web 应用程序运行的位置(devserver 路径)解析 hbm 文件,而不是它的文件存储位置,这似乎是您所期望的。

要引用您网站中的文件,请使用 ~识别您网站的根目录,例如<value>file://~/EMSApplication.Domain/EMSApplication.hbm.xml</value> .但是请确保文件已被复制,情况可能并非如此,因为您已将其设置为嵌入资源(为什么?)。

考虑以下改进,它们会让您的生活更轻松:

  • 移动文件夹中的代码dao , domainNHibernate到名为 Your.AssemblyName 的单独程序集(从您的 Web 应用程序引用的类库项目) .
  • session 工厂还支持指定要扫描的映射程序集,因此您不必指定每个文件 - 请参阅 setting up a session factory using spring.net 上的文档.指定 Your.AssemblyName在映射装配列表中:
<object id="MySessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingAssemblies">
<list>
<value>Your.AssemblyName</value>
</list>
</property>
<property name="HibernateProperties">
<!-- snip -->
</object>

并查看 the NHibernate example in the spring docs - 它非常适用于您在这里提出的问题。

关于c# - LocalSessionFactoryObject - MappingResources - hbm 文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com