ich die folgende Klasse haben:Nhibernate: QuerySyntaxException: 'Klasse' ist nicht abgebildet
public class MyClass
{
private List<long> _myList = new List<long>();
public virtual string MyID { get; set; }
public virtual string MyData
{
get
{
return SomeStaticClass.Serialize(_myList);
}
set
{
_myList = SomeStaticClass.Deserialize<List<long>>(value);
}
}
public virtual List<long> MyList
{
get { return _myList; }
}
}
Und die folgende Zuordnungsdatei:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="MyNamespace"
namespace="MyNamespace">
<class name="MyNamespace.MyClass" table="MY_TABLE">
<id name="MyID" column="MY_ID" type="System.String">
<generator class="assigned"></generator>
</id>
<property name="MyData" column="MY_DATA"></property>
</class>
</hibernate-mapping>
Wenn ich versuche, die folgende Zeile auszuführen:
session.Delete("From MyClass m");
Ich erhalte eine QuerySyntaxException mit der Nachricht "MyClass ist nicht zugeordnet [From MyClass s]".
Als ich den Namen des „MyID“ Feld ändern zu „ID“ in der Zuordnungsdatei, wird die Ausnahme
NHibernate.PropertyNotFoundException: Es konnte kein Getter für Eigenschaft ‚ID‘ in der Klasse ‚MyNamespace finden. Meine Klasse'.
Ich nehme an, es kann die Zuordnungsdatei finden. Ich stellte sicher, dass die Mapping-Datei eine eingebettete Ressource ist, checked und dobule prüfte die Namensraum- und Klassennamen in der Mapping-Datei. Was kann den Fehler verursachen? Ich denke, es kann sich auf die MyList-Eigenschaft beziehen, die nicht zugeordnet ist, aber ich bin nicht sicher, da ich non-mapped Eigenschaften auf meinen anderen Klassen ohne ein Problem verwende.
EDIT: Ich habe versucht, diese Klasse mit einer Klasse überschreiben, die keine "MyData" -Eigenschaft und Neudefinition "MyList" -Eigenschaft als Zeichenfolge hat. Ich erhalte immer noch den gleichen Fehler für meine überschriebene Klasse.
EDIT 2: Versucht mit einer sehr einfachen Klasse mit den gleichen Eigenschaftsnamen mit den gleichen Rückgabetypen und nur einfache erhalten; einstellen; Blöcke. Ich bekomme immer noch den gleichen Fehler. Ich bin mir fast sicher, dass Nhibernate meine Mapping-Dateien sehen kann, denn wenn ich den Namen einer einzelnen Eigenschaft ändere, gibt es mir PropertyNotFound anstelle von "class in not mapped".
Vielleicht nicht sehr hilfreich, aber haben Sie überprüfen, ob Ihr Eigenschaftsnamen die gleiche wie die in der Mapping-Datei ist? Beachten Sie, dass Eigenschaftsnamen die Groß-/Kleinschreibung beachten. –
Danke, ich habe alle ein Dutzend Mal überprüft, danach kopiere ich sie wieder und überprüfe noch einmal ein Dutzend Mal. –
Wenn ich einen Fehler similiar dazu erhalten fand ich, dass [diese] (http://www.thebestcsharpprogrammerintheworld.com/blogs/Nhibernate-QuerySyntaxException-is-not-mapped-from.aspx) war die Ursache. Ich habe viele Artikel über NHibernate geschrieben [http://www.thebestcharpprogrammerintheworld.com/archiveList.aspx?TAG=NHibernate]. Ich hoffe, dass dieser das Problem löst und die anderen Artikel helfen. – Benjamin