Domanda

In un'applicazione web come wiki, forum o software di blogging, è spesso utile archiviare i dati in un database relazionale.Poiché molte società di hosting offrono un singolo database con i loro piani di hosting (con database aggiuntivi che costano di più), è molto utile per i tuoi utenti quando gli oggetti del database (tabelle, viste, vincoli e procedure memorizzate) hanno un prefisso comune.È tipico che le applicazioni consapevoli della scarsità dei database abbiano un prefisso di tabella codificato.Voglio di più, però.Nello specifico, mi piacerebbe avere un prefisso di tabella che gli utenti possano designare, ad esempio nel file web.config (con un valore predefinito appropriato, ovviamente).

Dal momento che odio programmare CRUDO operazioni a mano, preferisco lavorare tramite un OR/M competente e ho utilizzato (e apprezzato) LINQ to SQL, Subsonic e ADO.Net.Tuttavia, ho un po' di problemi in un nuovo progetto, quando si tratta di inserire un prefisso di tabella nel file web.config di un utente.Esistono prodotti OR/M basati su .Net in grado di gestire questo scenario in modo elegante?

Il meglio che sono riuscito a trovare finora è usare LINQ to SQL con un file di mappatura esterno che dovrei aggiornare in qualche modo in base a un'impostazione web.config ancora ipotetica.

Qualcuno ha una soluzione migliore?Ho provato a realizzarlo in Entity Framework, ma si è trasformato rapidamente in un disastro.(A causa della mia scarsa familiarità con EF?Forse.) Che ne dici di SubSonic?Ha un'opzione per applicare un prefisso di tabella oltre al momento della generazione del codice?

È stato utile?

Soluzione

Ora ho studiato cosa è necessario per farlo sia in Entity Framework che in LINQ to SQL e documentato i passaggi richiesti in ciascuno.È molto più lungo di quanto tendono ad essere le risposte qui, quindi mi accontenterò di un collegamento alla risposta piuttosto che duplicarla qui.È relativamente complicato per ciascuno, ma LINQ to SQL è la soluzione più flessibile e anche la più semplice da implementare.

Altri suggerimenti

Velocità della luce consente di specificare un INamingStrategy che ti consente di risolvere i nomi delle tabelle in modo dinamico in fase di esecuzione.

Invece di utilizzare i prefissi di tabella, disporre di un utente dell'applicazione che appartiene a a schema (in MS Sql 2005 o versione successiva).

Ciò significa che invece di:

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

Hai:

select * from clientA.Product
select * from clientB.Product
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top