ASP.NET的NHIBERNATE-无法添加汇编ORM_DSCNEW



我是Nhibernate的新手。我面临以下问题:

Exception thrown: 'NHibernate.MappingException' in NHibernate.dll
NHibernate.MappingException: Could not add assembly ORM_dscnew ---> System.IO.FileNotFoundException: Could not load file or assembly 'ORM_dscnew' or one of its dependencies. The system cannot find the file specified.
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.Load(String assemblyString)
   at NHibernate.Cfg.Configuration.AddAssembly(String assemblyName)
   --- End of inner exception stack trace ---
   at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception)
   at NHibernate.Cfg.Configuration.AddAssembly(String assemblyName)
   at viroffice.ORM_sessionf.Init() in D:GDriveProjectsVirOfficevirofficeDataObjectsORM_sessionf.vb:line 7

执行功能时:

 Private Shared sFactory As NHibernate.ISessionFactory
    Private Shared Sub Init()
        Dim config As New NHibernate.Cfg.Configuration()
        Try
            config.AddAssembly("ORM_dscnew")
            sFactory = config.BuildSessionFactory()
        Catch ex As Exception
            System.Diagnostics.Debug.WriteLine(ex)
            Exit Sub
        End Try
    End Sub

执行上述函数时,我会遇到错误。

orm_dscnew.hbm.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns = "urn:nhibernate-mapping-2.2" namespace = "viroffice.DataObjects" assembly = "viroffice">
  <class name = "ORM_dscnew" table="dsc_new">
    <id name = "new_id">
      <generator class = "native"/>
    </id>
    <property name = "vnm" />
    <property name = "vcn_name" />
    <property name = "vref" />
    <property name = "vcn_per" />
    <property name = "vcn_no" />
    <property name = "vcn_email" />
    <property name = "vcn_email1" />
    <property name = "vrmks" />
    <property name = "vstatus" />
    <property name = "vapp_id" />
    <property name = "vmob_ver" />
    <property name = "vchg_code" />
  </class>
</hibernate-mapping>

请建议需要做什么?

使用 AddAssembly("ORM_dscnew")导致呼叫System.Reflection.Assembly.Load("ORM_dscnew")。在您的情况下,.NET框架无法找到您的组件并产生FileNotFoundException

nhibernate只需将其包裹在MappingException中即可。根部问题是找不到组装(或它的依赖关系之一...(。Microsoft文档指出,汇编名称应该是一个长名,您的代码仅提供简单的名称,因此也许是您的问题。

无论如何,我个人喜欢通过从其中包含的类型中获取一个组件来添加一个组件。当然,这意味着您的工厂需要参考这种类型。

config.AddAssembly(typeof(ATypeInORM_dscnew).Assembly);

最新更新