Dies ist meine erste Frage zu Stackoverflow. Ich hoffe es ist nicht das letzte und hoffentlich werde ich mit einigen Antworten selbst beitragen.Ist es möglich, PersistenceSpecification und CheckList für den Unit-Test einer Inverse HasMany-Beziehung zu verwenden?
Meine Frage ist einfach. Ich stecke mit einem NUnit-Test fest, in dem ich eine inverse HasMany-Beziehung teste. Jedes Mal, wenn ich es debugge, ist die Ausgabe "Tatsächliche Anzahl ist nicht erwartet Anzahl ...". Ich habe umfangreiche Recherchen im Internet zu diesem Thema durchgeführt, und einige Leute behaupten, dass es unmöglich ist, solch einen Einzeltest zu machen.
Hier ist mein Beispiel. -Code für EmployeeMapping:
Id(x => x.ID).GeneratedBy.Identity();
HasMany(x => x.PositionHistory).KeyColumn("Employee_id").Inverse().Cascade.All();
Hier ist der Code für EmployeePositionMapping:
Id(x => x.ID).GeneratedBy.Identity();
References(x => x.EmployeeAtPosition).Cascade.All().Nullable();
Der Unit-Test ist wie folgt:
var position2 = new EmployeePosition();
position2.ExtraBenefit = 353.00;
position2.Salary = 23300.00;
position2.Region = region;
position2.Department = department;
position2.Year = "2010";
position2.Comment = "kommentar igen...";
position2.History = true;
var positionList = new List<EmployeePosition>();
positionList.Add(position2);
new PersistenceSpecification<Employee>(Session, new CustomEqualityComparer<Employee, long>())
.CheckProperty(p => p.ID, Int64.Parse("1"))
.CheckList(p => p.PositionHistory, positionList, (emp, empPosition) => emp.AddEmployeePosition(empPosition))
.VerifyTheMappings();
Ich möchte die Nullable() ersetzen Attribut Not.Nullable() für References EmployeeAtPosition-Eigenschaft.
Ich habe eine Entity-Basisklasse, die kümmert sich um den Vergleich von Entitäten und sogar Transienten. Die AddEmployeePosition() kümmert sich darum, die Beziehung für Employee.PositionHistory und EmployeePosition.EmployeeAtPosition auf beide Arten zu verwalten.
Wenn ich auf die Nhibernate SQL in Ausgabe schaue Es scheint in Ordnung. Aber aus irgendeinem Grund ist es nicht gleich der Liste, die ich vorbereitet habe (positionList)
Weitere nützliche Fakten: Ich bin Nhibernate 3.0 und die passenden fließenden Nhibernate Binaries. Downloade sie vor drei Tagen. Verwenden von SQLite InMemory zum Ausführen von Mapping-Tests.
Ich schätze wirklich alle guten neuen Winkel, die Ihre Hinweise mir geben kann ...
/Mit freundlichen Grüßen BacceSR- von einem sehr verschneiten Stockholm.
Wow .. ein Kommentar zu meiner alten Frage :-) Ich habe inzwischen verstanden, dass Sie PersistenceSpecification nicht so oft verwenden können, um Mappings zu verifizieren. Viele Beziehungen zwischen Entitäten sind umgekehrt, daher habe ich diesen Mapping-Test manuell durchgeführt. –