Ich bin neu in NHibernate, die Konfiguration Aspekt von ihm schien mir immer zu beschwerlich. Gestern bin ich auf die Auto Mapping-Funktionen von Fluent NHibernate gestoßen und war entsprechend beeindruckt.Fluent NHibernate. Auto Mapping und Konventionen
Um mich selbst zu erziehen, habe ich mich selbst die Herausforderung gestellt, das "Erste Schritte Erste Projekt" (http://wiki.fluentnhibernate.org/show/GettingStartedFirstProject) mit AutoMappings und Konventionen zu versuchen. Ich muss zugeben, dass ich nicht viel Glück habe.
meine Schritte summise:
ich das Datenbankschema in dem Beispiel einige kleineren Änderungen vorgenommen, vor allem die Unterstreichungen von dem Fremdschlüssel zu entfernen (dh Product_id zu ProductId), da dies wäre es inline bringen mit unserem Datenbankbenennungsstandards.
Q1) Ich habe versucht, eine IHasManyConvention Implementierung mit der ForeignKeyConvention als Beispiel aber die WithKeyColumn Methode leider nicht zu existieren scheinen zu schreiben (ich nehme an, dies liegt daran, dass ich yesterdays bauen so anschließend das Design geändert hat heruntergeladen, da der Artikel geschrieben wurde). Wie behebe ich das?
Ich habe im Beispiel auch einige kleinere Änderungen an der Ebene Entities vorgenommen, da ich dachte, dies würde es einfacher machen, sie sollten StoresStockedIn in Stores (Product.cs) und Staff to Employees (Store.cs) umbenennen.
Mein Code sieht wie folgt aus:
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c
.Is(connectionString)))
.Mappings(m => m.AutoMappings.Add(
AutoPersistenceModel.MapEntitiesFromAssemblyOf<Store>()
.Where(t => t
.Namespace == "FluentNHibernateTesting.Entities")
.ConventionDiscovery.Setup(c => c.Add<ForeignKeyConvention>())
))
.BuildSessionFactory();
ich dann versuchen, die Geschäfte, Produkte und Mitarbeiter nach der Begleit-Beispiel zur Datenbank hinzufügen. Die Ausnahme, die ich erhalte passiert am Commit und ist:
Objekt verweist auf eine nicht gespeicherte transiente Instanz - speichern Sie die vorübergehende Instanz vor dem Löschen. Typ: FluentNHibernateTesting.Entities.Employee, Entität: FluentNHibernateTesting.Entities.Employee
Q2) Wie behebe ich dieses Problem? Ich verstehe (aufgrund meiner begrenzten Lektüre), dass es etwas damit zu tun hat, die Kaskadenelemente von Objektbeziehungen korrekt einzurichten, aber ich bin ein wenig darüber im Unklaren, wie man das effektiv mit Auto Mapping umgehen kann.
Q3) Gibt es ein Soll-Release-Datum für das Fluent-Projekt? Ich (so wie ich viele andere vermute) finde, dass dies eine hervorragende Initiative ist, aber ich denke daran, sie zu benutzen, wenn sie nicht in einem stabilen Zustand ist.
Q4) Es ist in vielen der Blogs erwähnt, dass sie stetig in Richtung Parität der Funktionen in Fluent mit hbn.xml arbeiten. Gibt es irgendwo eine Liste dieser fehlenden Features, um die Auswertung und Verwendung dieses Tools zu erleichtern?
Schätzen Sie die Hilfe im Voraus.