Laden...

[erledigt] fluent nHibernate Mapping

Erstellt von Ahrimaan vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.303 Views
A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren
[erledigt] fluent nHibernate Mapping

verwendetes Datenbanksystem: <MSSQL 2005>

Hallo zusammen,
ich habe ein Problem wo ich den Fehler nicht sehe.

Ich habe folgende Entitäten :

public class Raum
    {
        public virtual int ID { get; set; }
        public virtual string Name { get; set; }
        public virtual List<Platz> Plätze { get; set; }
        //public virtual RaumPlan Plan { get; set; }
    }
  public class Platz
    {
        public virtual int ID { get; set; }
        public virtual string Pc { get; set; }
        public virtual TelefonTyp Telefontyp {get;set;}
        public virtual string Telefonnummer { get; set; }
        public virtual Raum Raumzuordnung { get; set; }
        public virtual List<MaToGalaPlanningToPlatz> GeplanteGalenZuordnung { get; set; }
        public virtual string Koordinate { get; set; }
    }

Und das Mapping :

public class RaumMapping:ClassMap<Raum>
    {
        public RaumMapping()
        {
            Id(p => p.ID);
            Map(p => p.Name).Not.Nullable();
            HasMany(p => p.Plätze).Cascade.All();
        }
    }
 public class PlatzMapping:ClassMap<Platz>
   {
       public PlatzMapping()
       {
           Id(p => p.ID);
           Map(p => p.Pc);
           Map(p => p.Telefonnummer);
           Map(p => p.Koordinate);
           HasOne(p => p.Raumzuordnung);
           HasOne(p => p.Telefontyp);
           HasMany(p => p.GeplanteGalenZuordnung).Cascade.All();
       }
    }

Wenn ich jetzt probiere auf die Plätze in einem Raum zu zugreifen erhalte ich folgende Exception :> Fehlermeldung:

Das Objekt des Typs &quot;NHibernate.Collection.Generic.PersistentGenericBag1[SPUS.Models.Platz]\&quot; kann nicht in Typ \&quot;System.Collections.Generic.List1[SPUS.Models.Platz]&quot; umgewandelt werden.

Öhh nur warum des seh ich nicht so ganz ....

16.834 Beiträge seit 2008
vor 12 Jahren

War das bei nHibernate nicht so, dass er für Collections ein ISet oder ein IList erwartet, und nicht ein List?
Offensichtlich stimmt jedenfalls der Typ nicht.

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Hmm das ganze wird mir nun immer schleierhafter.
Jetzt habe ich es durhc IList ersetzt ok geht.
Nur wird der Telefontyp nicht richtig gesetzt

also zB Telefontyp ID 1 Id 2 usw. als ob er immer nur die ID erhöhen würde...
Muss man beim Mapping auf Fremdtypen noch etwas angeben ausser Hasone oder HasMany ?

16.834 Beiträge seit 2008
vor 12 Jahren

Ich weiß nur noch grob, dass eben IList und ISet als virtuelle Collection dienen.
Wie das genau ansonsten noch läuft kann ich leider nich sagen, bin im EF zu Hause.

3.511 Beiträge seit 2005
vor 12 Jahren

HasOne ist an der Stelle falsch. Es müsste ein Reference sein.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Besten dank, das war mein Fehler !