ich versuche, mich gerade mit FluentNHibernate auseinander zu setzen. Mal angenommen, ich habe folgende Klassen:
public class Person : IEntity { public virtual int Id { get; set; } public virtual string LastName { get; set; } public virtual string FirstName { get; set; } public virtual IList<Movie> DirectedMovies { get; set; } public virtual IList<Movie> ActorInMovies { get; set; } }
public class Movie : IEntity { public virtual int Id { get; set; } public virtual string Title { get; set; } public virtual IList<Person> Actors { get; set; } public virtual Person Director { get; set; } public virtual int ReleaseYear { get; set; } }
Diese versuche ich jetzt mit folgenden MappingKlassen auf die DB zu mappen:
Dann bekomme ich da einer (meiner Meinung nach) falsche Tabelle (Movie - die Person-Tabelle stimmt):
create table [Movie] ( Id INT IDENTITY NOT NULL, ReleaseYear INT null, Title NVARCHAR(255) null, Director_id INT null, Person_id INT null, primary key (Id) )
Wo kommt da jetzt das zusätzliche Feld "Person_id" her?
Wenn ich ein paar Daten erzeuge und speichere, funktioniert auch (fast) alles - das Feld Person_id wird auch nicht gefüllt.
Und da hab ich gleich noch einen ;)
Wenn ich die Daten jetzt abfrage:
var personList = from p in session.Query<Person> select p;
dann finde ich in personList[0].ActorInMovies die ganzen Filme, die eingetragen wurden, allerdings werden die DirectedMovies nicht geladen.
public class Movie : IEntity { public virtual int Id { get; set; } public virtual string Title { get; set; } public virtual IList<Person> Actors { get; set; } public virtual Person Director { get; set; } public virtual int ReleaseYear { get; set; } }
ich hab das mal rausgenommen und das Feld war danach noch vorhanden. Nachdem ich allerdings das Feld Director entfernt hatte, waren die beiden Felder Person_id und Director_id weg?!