2008-08-14 14 views
4

In einer Webanwendung wie Wiki oder Foren oder Blogging-Software ist es oft nützlich, Ihre Daten in einer relationalen Datenbank zu speichern. Da viele Hosting-Unternehmen eine einzige Datenbank mit ihren Hosting-Plänen anbieten (wobei zusätzliche Datenbanken zusätzliche Kosten verursachen), ist dies sehr nützlich für Ihre Benutzer, 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, ein fest codiertes Tabellenpräfix zu haben. Ich will aber mehr. Insbesondere möchte ich ein Tabellenpräfix haben, das Benutzer — sagen können, in der Datei web.config (mit einem geeigneten Standard, natürlich).Konfigurierbare Tabellenpräfixe mit einem .Net OR/M?

Da ich Codierung CRUD Operationen von Hand hasse, arbeite ich lieber durch eine kompetente OR/M und habe LINQ zu SQL, Subsonic und ADO.Net verwendet (und genossen). Ich habe jedoch in einem neuen Projekt einen Thrash, wenn es darum geht, in der Datei web.config eines Benutzers ein Tabellenpräfix zu setzen. Gibt es irgendwelche .Net-basierten OR/M-Produkte, die elegant mit diesem Szenario umgehen können?

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

Wer hat eine bessere Lösung? Ich habe versucht, es in Entity Framework möglich zu machen, aber das wurde schnell zu einem Durcheinander. (Wegen meiner Unkenntnis von EF? Möglicherweise.) Wie wäre es mit SubSonic? Hat es eine Option, ein Tabellenpräfix neben der Codegenerierungszeit anzuwenden?

Antwort

2

ich jetzt habe recherchiert, was es in dieser beiden Entity Framework und LINQ to SQL und documented the steps required in each zu tun braucht. Es ist viel länger als Antworten hier sind, so werde ich mit einem Link zu der Antwort zufrieden sein, anstatt es hier zu duplizieren. Es ist für jeden relativ kompliziert, aber LINQ to SQL ist die flexiblere und am einfachsten zu implementierende Lösung.

1

LightSpeed können Sie eine INamingStrategy angeben, mit der Sie Tabellennamen dynamisch zur Laufzeit auflösen können.

1

Anstatt Tabellenpräfixe zu verwenden, verwenden Sie stattdessen einen Anwendungsbenutzer, der zu schema gehört (in MS Sql 2005 oder höher). Das bedeutet,

dass statt:

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

Sie haben:

select * from clientA.Product 
select * from clientB.Product 
Verwandte Themen