Frage

In einer Webanwendung wie Wiki, Foren oder Blogging-Software ist es oft sinnvoll, Ihre Daten in einer relationalen Datenbank zu speichern.Da viele Hosting-Unternehmen mit ihren Hosting-Plänen eine einzelne Datenbank anbieten (wobei zusätzliche Datenbanken extra kosten), ist es für Ihre Benutzer sehr nützlich, wenn Ihre Datenbankobjekte (Tabellen, Ansichten, Einschränkungen und gespeicherte Prozeduren) ein gemeinsames Präfix haben.Es ist typisch für Anwendungen, die sich der Datenbankknappheit bewusst sind, über ein fest codiertes Tabellenpräfix zu verfügen.Ich will jedoch mehr.Insbesondere hätte ich gerne ein Tabellenpräfix, das Benutzer festlegen können – beispielsweise in der Datei web.config (natürlich mit einem entsprechenden Standardwert).

Da ich Programmieren hasse CRUD Wenn ich Operationen manuell durchführe, bevorzuge ich die Arbeit mit einem kompetenten OR/M und habe LINQ to SQL, Subsonic und ADO.Net verwendet (und genossen).Allerdings habe ich in einem neuen Projekt Probleme, wenn es darum geht, ein Tabellenpräfix in die web.config-Datei eines Benutzers einzufügen.Gibt es .Net-basierte OR/M-Produkte, die dieses Szenario elegant bewältigen können?

Das Beste, was mir bisher einfallen konnte, ist die Verwendung von LINQ to SQL mit einer externen Zuordnungsdatei, die ich auf der Grundlage einer noch hypothetischen web.config-Einstellung irgendwie aktualisieren müsste.

Hat jemand eine bessere Lösung?Ich habe versucht, es im Entity Framework umzusetzen, aber das wurde schnell zu einem Chaos.(Aufgrund meiner Unkenntnis von EF?Möglicherweise.) Wie wäre es mit SubSonic?Gibt es eine Option zum Anwenden eines Tabellenpräfixes außer zum Zeitpunkt der Codegenerierung?

War es hilfreich?

Lösung

Ich habe jetzt recherchiert, was dazu nötig ist, sowohl in Entity Framework als auch in LINQ to SQL und dokumentiert die jeweils erforderlichen Schritte.Es ist viel länger, als die Antworten hier normalerweise sind, daher begnüge ich mich mit einem Link zur Antwort, anstatt sie hier zu duplizieren.Es ist für beide relativ aufwändig, aber LINQ to SQL ist die flexiblere Lösung und auch am einfachsten zu implementieren.

Andere Tipps

Lichtgeschwindigkeit ermöglicht Ihnen die Angabe eines INamingStrategy Damit können Sie Tabellennamen zur Laufzeit dynamisch auflösen.

Anstatt Tabellenpräfixe zu verwenden, muss ein Anwendungsbenutzer vorhanden sein, der zu einem gehört schema (in MS SQL 2005 oder höher).

Das bedeutet, dass statt:

select * from dbo.clientAProduct
select * from dbo.clientBroduct

Du hast:

select * from clientA.Product
select * from clientB.Product
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top