2010-12-21 4 views
0

Nun, ich kämpfe jetzt schon ein wenig damit, und ich kann anscheinend keine Lösung für etwas finden, das wirklich einfach sein sollte. Ich habe eine Klasse (wirklich einfache Klasse) Ich habe die hbm.xml (SET AS EMBEDDED RESOURCE) Ich habe die Konfigurationsdatei für SQLite gesetzt, aber ich bekomme immer noch die [Klasse] ist nicht zugeordnet.nHibernate & SQLite = [Klasse] Wird nicht gemappt

Hier ist, wo der Fehler kommt, wenn ich diesen laufen:

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 

-Code in meinem Zentrum Klasse

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 

Hier ist der Code für die 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> 

Die 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> 

Antwort

1

Entsprechend Ihrer Zuordnungsdatei ist die Klasse Center in der KC-Assembly vorhanden. Entsprechend Ihrer Konfiguration erhält die Assembly den Namen KC.Domain. Überprüfen Sie den Name der Assembly, die Ihre Center-Klasse enthält. Ihre Mapping-Klasse muss wohl sagen:

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

Sie könnten auch die folgenden in Ihrer hbm.xml-Datei verwenden möchten ...

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

Beachten Sie die Namespace und Montage Erklärungen. Ich finde, dass sie meine hbm.xml-Dateien bereinigen, wenn sie oben sind. Dann können Sie durchgehend relative Namen verwenden.

+0

Hey James, Danke für deine Antwort, aber das funktioniert auch nicht. Ich hatte es genau so am Anfang und ich begann Dinge zu ändern, aber es hat es auch nicht getan :( –

+0

Wenn Sie Ihre kompilierte Assembly mit Reflector untersuchen, was heißt es der Namespace von Center ist? Was ist der Standard-Namespace für Ihre VB-Assembly festgelegt auf? Können Sie die genaue Fehlermeldung und Stack-Trace einfügen? –

Verwandte Themen