Laden...

Nhibernate mapping funktioniert nicht wie ich erwartet habe

Erstellt von fluxy vor 15 Jahren Letzter Beitrag vor 14 Jahren 1.079 Views
F
fluxy Themenstarter:in
183 Beiträge seit 2009
vor 15 Jahren
Nhibernate mapping funktioniert nicht wie ich erwartet habe

verwendetes Datenbanksystem: Microsoft SQL 2005 Express

Guten Abend,

ich bin gerade auf der Suche nach einem Datenbankpersistenzwerkzeug unter C#, und bin auch durch meine Vorbelastung mit Java, auf die NHibernate Library aufmerksam geworden.

Ich wollte mir zunächst ein kleines Testprojekt basteln, welches nur auf einer Relation operiert(sie soll Agent heissen) und Instanzen gleichen Namens in/aus der Datenbank serialisiert.

Die Mappinginformationen werden momentan über die Methode Configuration.LoadFile() geladen (auch weil ich mit dem Zeugs das erste mal arbeite). Leider bekomme ich eine MappingException mit dem Hinweis "Das Stammelement ist nicht vorhanden".

Haben wir hier NHibernate-Spezialisten in der Runde?

Folgende Daten liegen dem Fehler zugrunde:


<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="MyProject"
                   namespace="MyProject.Domain">

  <!-- more mapping info here -->
  
  <!-- mapping for Class "Agent" -->
  <class name="Agent">

    <id name="agent_id">
      <generator class="guid" />
    </id>

    <property name="Name" />
    <property name="Title" />
    <property name="DateOfBirth" />
    <property name="DateOfEmployment" />
    
  </class>


</hibernate-mapping>


Configuration cfg = new Configuration();
cfg.AddFile("Agent.hbm.xml");

M
110 Beiträge seit 2007
vor 15 Jahren

Dir fehlt das Attribute "table" im class Node.

Hast Du es schon mal in Invist als Mapper probiert. Bietet sich an, falls Du eine exitierende Datenbank hast und daraus gerne die KLasse generieren möchtest.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

F
fluxy Themenstarter:in
183 Beiträge seit 2009
vor 15 Jahren

Guten Tag,

vielen Dank für den Link. In diesem speziellen Fall habe ich jedoch keine existierende Datenbank, die ich übernehmen will. Ich habe jedoch deinen Tip aufgenommen und einmal in die Agent.hbm.xml eingebaut. Dies brachte jedoch keinen Erfolg (Ich meine aber auch gelesen zu haben, dass von einem gleichnamigen Relationsnamen ausgegangen wird, sofern keiner angegeben ist).

Hat jemand noch eine Idee? Gibt es eine Möglichkeit für mich, an mehr Informationen zu kommen?

Grüße

M
110 Beiträge seit 2007
vor 15 Jahren

Wie sieht denn Deine Datenbank aus. Ich gehe jetzt mal davon aus, dass Die Tabellen genau so heisst wie Deine Klasse und jeden Property auch dem Namen der Spalten entsprechen.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

F
fluxy Themenstarter:in
183 Beiträge seit 2009
vor 14 Jahren

Hallo Mirco,

ja dies ist korrekt. Die entsprechenden Felder in der Datenbanktabelle leiten sich aus der Namenskonvertion der Klasse ab.

Gruß Sebastian.

F
10.010 Beiträge seit 2004
vor 14 Jahren

Dann such mal nach "fluent nhibernate"