似乎无法让nhibernate与mysql一起工作

时间:2014-12-14 18:09:21

标签: c# mysql asp.net nhibernate

我在设置NHibernate以使用mysql数据库时遇到问题..... 错误:

  

[InvalidProgramException:JIT Compiler遇到内部限制。]   NHibernate.Cfg.MappingSchema.HbmId.get_Type()+ 0   NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema,PersistentClass rootClass,Table table)+477   NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema,IDictionary 2 inheritedMetas) +1901 NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(HbmClass rootClass, IDictionary 2 inheritedMetas)+295   NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema,IDictionary`2 inheritedMetas)+321   NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema)+316   NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument,String documentFileName)+489

     

[MappingException:无法编译映射文档:WebGest.NET.DomainModel.Mappings.XML.Operator.hbm.xml]     NHibernate.Cfg.Configuration.LogAndThrow(异常异常)+220     NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument,String documentFileName)+741     NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc)+233     NHibernate.Cfg.Configuration.ProcessMappingsQueue()+ 121     NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document)+195     NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader,String name)+217     NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream,String name)+284     NHibernate.Cfg.Configuration.AddResource(String path,Assembly assembly)+483     NHibernate.Cfg.Configuration.AddAssembly(Assembly assembly)+459     NHibernate.Cfg.Configuration.AddAssembly(String assemblyName)+410     NHibernate.Cfg.Configuration.DoConfigure(ISessionFactoryConfiguration factoryConfiguration)+1935     NHibernate.Cfg.Configuration.Configure()+269     eGr中的WebGest.NET.DomainModel.NHSessionFactory.Init()#C \ \ WebGest.net \ webgest \ WebGest.NET \ DomainModel \ NHSessionFactory.cs:21     eGr中的WebGest.NET.DomainModel.NHSessionFactory.GetSessionFactory():#dev \ C#\ WebGest.net \ webgest \ WebGest.NET \ DomainModel \ NHSessionFactory.cs:32     e:\ dev \ C#\ WebGest.net \ webgest \ WebGest.NET \ DomainModel \ NHSessionFactory.cs中的WebGest.NET.DomainModel.NHSessionFactory.get_Instance():45     WebGest.NET.DomainModel.NHSession..cctor()在e:\ dev \ C#\ WebGest.net \ webgest \ WebGest.NET \ DomainModel \ NHSession.cs:12

     

[TypeInitializationException:'WebGest.NET.DomainModel.NHSession'的类型初始值设定项引发异常。]   WebGest.NET.Login.Page_Load(Object sender,EventArgs e)位于e:\ dev \ C#\ WebGest.net \ webgest \ WebGest.NET \ WebGest.NET \ Login.aspx.cs:16     System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+188     System.EventHandler.Invoke(Object sender,EventArgs e)+0     System.Web.UI.Control.OnLoad(EventArgs e)+162     System.Web.UI.Control.LoadRecursive()+ 164     System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3601

的Web.config:

 <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
     <reflection-optimizer use="false" />
     <session-factory>
       <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
       <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
       <property name="connection.connection_string">Server=localhost;Database=webgest;User ID=root;Password=;</property>
       <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
       <mapping assembly="DomainModel" />
     </session-factory>
   </hibernate-configuration>

映射文件:

   <?xml version="1.0" encoding="utf-8" ?>
   <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
   namespace="WebGest.NET.DomainModel"
   assembly="DomainModel">
     <class name="Operator" table="s_operatori">

       <id name="IdOperator" column="IdOperator" unsaved-value="0">
         <generator class="native" />
       </id>

       <property name="User">
         <column name="User" not-null="true" />
       </property>

       <property name="Parola">
         <column name="Parola" not-null="false" />
       </property>

       <property name="FlagActiv">
         <column name="FlagActiv" not-null="true" />
       </property>
     </class>
   </hibernate-mapping>

CS:

   namespace WebGest.NET.DomainModel
   {
       public partial class Operator
       {
           public virtual int IdOperator { get; set; }
           public virtual string User { get; set; }
           public virtual string Parola { get; set; }
           public virtual bool FlagActiv { get; set; }
           public Operator() { }
       }
   }

那么我做错了什么?

此外,asp.net站点与包含NHibernate和mysql引用的“domainmodel”项目位于一个单独的项目中,两个项目都在同一个解决方案中。

2 个答案:

答案 0 :(得分:1)

尝试揭示异常的内部例外:

  

{"Could not compile the mapping document: WebGest.NET.DomainModel.Mappings.XML.Operator.hbm.xml"}

将有明确的信息,明确的信息。例如:

  

{"persistent class WebGest.NET.DomainModel.Operator, DomainModel not found"}

这意味着,未加载具有类Operator的项目。如果 DomainModel 程序集中未定义Operator,那将是真的......

但我猜这里.. 内部异常会清楚地通知你......

答案 1 :(得分:0)

好的,显然问题是我的视觉工作室(我使用最新版本),更具体的intelitrace导致问题,禁用intelitrace将解决这个问题。