C# LocalSessionFactoryObject-MappingResources-hbm文件的路径
项目结构为: 现在我尝试创建一个beanC# LocalSessionFactoryObject-MappingResources-hbm文件的路径,c#,nhibernate,spring.net,mapping-resources,C#,Nhibernate,Spring.net,Mapping Resources,项目结构为: 现在我尝试创建一个beanNHibernateSessionFactoryas: EMSApplication.Domain/EMSApplication.hbm.xml 但我收到了错误信息: 创建上下文“spring.root”时出错:文件[C:\Program Files(x86)\Common Files\Microsoft Shared\DevServer\10.0\EMSApplication.Domain\EMSApplication.hbm.xml]无法解析为本
NHibernateSessionFactory
as:
EMSApplication.Domain/EMSApplication.hbm.xml
但我收到了错误信息:
创建上下文“spring.root”时出错:文件[C:\Program Files(x86)\Common Files\Microsoft Shared\DevServer\10.0\EMSApplication.Domain\EMSApplication.hbm.xml]无法解析为本地文件路径-资源未使用“file:”协议。
现在项目在D驱动器上,我想知道为什么这是指向C驱动器
另外,如何在映射资源中添加指定的hbm文件?此文件设置为“嵌入式资源”
有没有办法在这里指定一个目录来扫描多个hbm文件
任何信息都将对我非常有用。您没有在资源名称中使用协议标识符(例如
文件://
或程序集://
),因此Spring使用默认的文件协议。它试图从web应用程序正在运行的位置(devserver路径)解析hbm文件,而不是从它的文件存储的位置解析,这似乎是您所期望的
要引用网站中的文件,请使用~
标识网站的根目录,例如文件://~/EMSApplication.Domain/EMSApplication.hbm.xml
。但请确保复制了该文件,情况可能并非如此,因为您已将其设置为embedded resource(为什么?)
考虑以下改进,它们将使您的生活更加轻松:
- 将文件夹
、dao
和domain
中的代码移动到名为NHibernate
的单独程序集(从web应用程序引用的类库项目)中李>your.AssemblyName
- 会话工厂还支持指定要扫描的映射程序集,因此您不必指定每个文件-请参阅上的文档。在映射程序集列表中指定.AssemblyName:
你的名字
看看吧,它非常适用于你在这里提出的问题