Vb.net nHibernate&;SQLite=[Class]未映射

Vb.net nHibernate&;SQLite=[Class]未映射,vb.net,nhibernate,nhibernate-mapping,Vb.net,Nhibernate,Nhibernate Mapping,嗯,我已经为此奋斗了一段时间,但我似乎找不到一个解决办法,它应该是非常简单的。我得到了一个类(非常简单的类),我得到了hbm.xml(设置为嵌入式资源),我得到了SQLite的配置文件集,但我仍然得到了未映射的[class] 下面是我运行此操作时出现错误的地方: Public Sub LoadCentersFromDatabase() Try Dim session As ISession = OpenSession() Dim

嗯,我已经为此奋斗了一段时间,但我似乎找不到一个解决办法,它应该是非常简单的。我得到了一个类(非常简单的类),我得到了hbm.xml(设置为嵌入式资源),我得到了SQLite的配置文件集,但我仍然得到了未映射的[class]

下面是我运行此操作时出现错误的地方:

 Public Sub LoadCentersFromDatabase()
        Try
            Dim session As ISession = OpenSession()
            Dim query As IQuery = session.CreateQuery("from Center")
            Dim foundCenters As IList(Of Center) = query.List(Of Center)()
            MsgBox(foundCenters.Count)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
我的中心班里的代码

Public Class Center


#Region " Class Constructors "

    Protected Sub New()

    End Sub

    Public Sub New(ByVal centerName As String, ByVal address As String, ByVal city As String, ByVal state As String, ByVal zip As String, ByVal country As String, ByVal phone As String)
        Me.Id = 0
        Me.ExternalId = -1
        Me.CenterName = centerName
        Me.Address = address
        Me.City = city
        Me.State = state
        Me.ZIP = zip
        Me.Country = country
        Me.Phone = phone
    End Sub

    Public Sub New(ByVal id As Integer, ByVal centerName As String, ByVal address As String, ByVal city As String, ByVal state As String, ByVal zip As String, ByVal country As String, ByVal phone As String)
        Me.New(centerName, address, city, state, zip, country, phone)
        Me.Id = id
    End Sub

#End Region

#Region " Declared Auto Properties "

    Public Property Id As Integer
    Public Property ExternalId As String
    Public Property CenterName As String
    Public Property Address As String
    Public Property City As String
    Public Property State As String
    Public Property ZIP As String
    Public Property Country As String
    Public Property Phone As String

#End Region


End Class
这里是hbm.xml的代码

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="KC.Domain.Center, KC" table="Centers" lazy="true">
    <id name="Id" column="CenterId">
      <generator class="native" />
    </id>
    <property name="CenterName" unique="true" />
    <property name="ExternalId" />
    <property name="Address" />
    <property name="City" />
    <property name="State" />
    <property name="ZIP" />
    <property name="Country" />
    <property name="Phone" />
  </class>
</hibernate-mapping>

App.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
  <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
</configSections>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SQLite20Driver, NHibernate</property>
    <property name="connection.connection_string">
      Data Source=C:\Users\Public\Documents\cats.db;Version=3
    </property>
    <property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
    <property name="query.substitutions">true=1;false=0</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
    <mapping assembly="KC.Domain"/>
  </session-factory>
</hibernate-configuration>
</configuration>

NHibernate.Connection.DriverConnectionProvider
NHibernate.Driver.SQLite20Driver,NHibernate
数据源=C:\Users\Public\Documents\cats.db;版本=3
NHibernate.dialogue.sqlitedialogue
真=1;假=0
NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu

根据映射文件,中心类存在于KC部件中。根据您的配置,程序集名为KC.Domain。验证包含中心类的部件的名称。您的映射类可能需要说:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="KC.Domain.Center, KC.Domain" table="Centers" lazy="true">

您可能还希望在hbm.xml文件中使用以下内容

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
                   namespace="KC.Domain"
                   assembly="KC.Domain">
    <class name="Center" table="Centers" lazy="true">


注意名称空间和程序集声明。我发现将它们放在顶部可以清理我的hbm.xml文件。然后你可以在整个过程中使用相对名称。

嘿,詹姆斯,谢谢你的回答,但这也不行。我在一开始的时候就是这样,我开始改变一些事情,但它也没有这样做:(如果你用Reflector检查你编译的程序集,它说中心的名称空间是什么?你的VB程序集的默认名称空间是什么?你能粘贴准确的错误消息和堆栈跟踪吗?