Frage

Kann mir jemand helfen, zu verstehen, wie am besten, eine Zusammensetzung Beziehung zu modellieren?

Wenn ich zum Beispiel einen Schüler habe die viele Zeitplan haben kann, würde ich schaffen grob:

class Student
{
  prop long Pk { get; set; }
  prop string Name { get; set; }
  prop List<Schedule> Schedules { get; set; }
}

class Schedule
{
  prop string Semester { get; set; }
  prop List<Course> Courses{ get; set; }
}

Irgendwo auf der ganzen Linie kann ich einen Zeitplan zum Gegenstand haben, und wollen feststellen, welche Schüler es gehört. Ich möchte in der Lage sein Schedule.Student.Name zu schreiben, und erhalten Namen im Gegenzug des Schülers. Muss ich auch eine Studenten eigenschaft auf meine Schedule Objekt hinzufügen?

Meine Anwendung hat, um einen Student Pk zu meinem Zeitplan Objekt wurde vorbei CRUD-Funktionalität zu tun. Ich halte die Schüler PK als privaten Variable, um den Griff zu halten, wenn ich es brauche.

Als meine Anwendung komplexer wird, ich finde es schwer zu halten, was ich getan habe. Was sind Ihre Vorschläge für mich? Was kann ich sonst noch (Bücher / Links) beraten auf diesen Grundlagen auffrischen und besser in den Griff zu bekommen?

War es hilfreich?

Lösung

„Ich möchte in der Lage sein Schedule.Student.Name zu schreiben und den Namen im Gegenzug Schüler erhalten. Habe ich eine Studenten eigenschaft auf meine Schedule-Objekt hinzufügen, als auch?“ Ja.

Was Sie beschreiben (beide Fremdschlüssel für die Suche zu unterstützen und Referenzen für die einfache Navigation des Objekts Graph-Objekt) klingt wie ein wirklich gutes Spiel für einen objektrelationalen Mapper (ORM). Eine gute ORM lädt automatisch die zugehörige Objekt / Objekte für Sie den FK / PK (z.B. wenn der Zeitplan ein StudentPK Feld hat dann der Mapper wird Laden / Abbildung der Studenten Immobilie für Sie handhabt). Es gibt viele Produkte dieser Art: Sie integrierten .NET Frameworks verwenden können, wie die Entity Framework , Open-Source-diejenigen wie NHibernate oder kommerzielle Produkte wie Light , LLBLGen , EntitySpaces oder < a href = "http://www.telerik.com/products/orm.aspx" rel = "nofollow noreferrer"> OpenAccess- (Offenlegung: ich arbeite für ein Unternehmen, das einen kommerziellen ORM macht). Google für ORM oder objektrelationalen Mapper oder Wikipedia überprüfen, um einen Überblick über die Art der Sache, die ich beschreibe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top