Moin
ich weiß, das gehört eigentlich noch zu den Grundlagen, aber ich finde einfach keine brauchbare Erklärung dazu. -.-
Und zwar habe ich eine relativ umfangreiche Datenbank, die ein zweischichtiges Account-System ermöglicht. Soll heißen, ein Account kann mehrere Charactere enthalten, die dann sehr ähnliche Daten beinhalten.
In meinem Fall bietet sich Vererbung super dafür an, aber es ist ja sql.
Das sind die Tabellen AccountBase, Account und Character.
AccountBase stelt so DInge wie der AccountName oder der NickName zur Verfügung und wickelt das ganze Nachrichten-System ab.
Das für Account und Character immer extra zu machen, würde den Rahmen der Datenbank ziemlich stark ausweiten.
Account bietet dann eine Liste der Charactere, eine eMail-Adresse und das Passwort, als Hash gespeichert.
Character stellt dann Character-Spezifische Dinge zur Verfügung, bei mir wäre das dann z.B. welches Wesen der Character ist.
Deshalb habe ich erst versucht, die ID die Account-Basis-Tabelle in die Character- und Account-Tabellen zu legen und bin dann später auf das Problem gestoßen, dass ich von der Basis-Tabelle nicht die Referenz des jeweiligen Accounts bekommen kann, zumindest nicht, ohne die ganze Datenbank nach der passenden ID zu durchsuchen und ich hab keine Ahnung, wie man das in LINQ to SQL macht, da das ganze ja referenziell gelöst wird.
Deshalb wollte ich die Klassen erben lassen. Kein Ding, die Attribute und Co. sitzen, wie sie sollen. Dafür habe ich extra die Spalte AccountType in AccountBase eingefügt, die entweder Account, Character oder Nothing beinhalten soll. Nothing hat hier keinen weiteren Sinn, nur dass ich ein InheritanceMappingAttribut-Attribut mit IsDefault = true habe. Da ich sowieso keine Referenz der Klasse AccountBase erstellen werde und bei Account nicht einmal die Wahl besteht, das fest zulegen, sondern gleich im Konstruktor gesetzt wird, wird das also nur vorkommen, wenn sich jemand händisch an der Datenbank zu Schaffen macht.
Meine Frage ist, wie das ganze nun in der reinen SQL-Datenbank umgesetzt werden muss.
Kann ich das alte System so belassen, muss ich die Daten von Account und Character beide in AccountBase aufnehmen und dann im LINQ to SQL fest legen, welche Daten für welche Eigenschaft genommen werden, oder wird das anders gelöst?
Ich hoffe ihr könnt mir da helfen.
Gruß