Wie gehen Sie mit SubSonic ‚Beziehungen‘ mit der Migration?
-
16-09-2019 - |
Frage
Laut diesem Artikel: http://subsonicproject.com/docs/3.0_Migrations
Bottom line: if you're a developer that is concerned about database design,
migrations might not be for you.
Ok, das ist in Ordnung, ich kann die Datenbank einfach als ein persistenten Daten-Repository behandeln, die keine Geschäftslogik enthalten. Mit anderen Worten, eine glorifizierte Textdatei.
Was ich weiß nicht, wie zu tun ist, zusammen zwei Objekte beziehen. Nehmen Sie zum Beispiel diese beiden Klassen:
public class Disaster
{
public int DisasterId { get; set; }
public string Name { get; set; }
public DateTime? Date { get; set; }
public IList<Address> Addresses { get; set; }
}
public class Address
{
public int AddressId { get; set; }
public string WholeAddressHereForSakeOfBrevity { get; set; }
}
Disaster
enthält eine IList
mehrere Addresses
, die von der Katastrophe betroffen war. Als ich SimpleRepository
verwenden diese in die Datenbank mit SimpleRepositoryOptions.RunMigrations
hinzuzufügen, erzeugt er die Tabellen mit allen Spalten, aber keine Fremdschlüsselspalten wie erwartet.
Wie würde ich diese beiden zusammen beziehen, so dass, wenn ich Disaster.Addresses
nennen, habe ich eine Liste aller betroffenen Addresses
bekommen? Ist das möglich oder muss ich Active verwenden, anstatt, und erstellen Sie die Datenbanktabellen zuerst? Oder muss ich für die Katastrophe der ID in Address
in einer Spalte hinzu? Wenn ja, wie funktioniert diese Methode Arbeit für viele-zu-viele-Beziehungen?
Lösung
Es ist möglich - Sie tun es nur von Hand ist alles. In der Unterkunft um Disaster namens „Adressen“ und machen es zu einem IList <> (oder Sie können es IQueryable machen, wenn Sie es zu Lazy Load wollen). Wenn Sie Ihre Disaster abrufen, nur sicher sein, Ihre Adressen abgerufen werden.
Es ist eine Art „Handbuch“ - aber das ist die Idee. Ich arbeite an Verbesserungen dies, dass ich in einer späteren Version schieben bin die Hoffnung.
Und bevor Sie fragen, warum ich tat es nicht in erster Linie :) es ist, weil ich nicht weiß, ob ich eine viele zu viele oder 1-viele auf der Grundlage der Eltern / Kind-Beziehung verwendet werden soll. In Ihrem Beispiel ich würde vermuten, dass es wahrscheinlich 1 bis viele, aber man bedenkt, was ich weiß, über Adressen und Katastrophen (vor allem in Florida) ist es wahrscheinlich zu viele viele sein sollte.
Bottom Line - wie würden SubSonic das wissen? Wir konnten beide Objekte für „Bidirektionalität“ introspect, was bedeutet, wenn Adress viele Katastrophen hat, als es viele viele ist (was offensichtlich ist.) - aber das ist dann nicht glücklich Codierung, wenn Sie wie DDD
Ich bin Neigung zu dieser Regel mit irgendeiner Art von Überschreibung, die das Problem zwingen würde. Ihre Gedanken dazu sind willkommen:)