Sto lavorando su un CMS come mio progetto per hobby. Perché non sono pagato per questo, il tempo non è molto essenziale e aspiro a fare un sistema ben architettato.Quale ORM dovrei usare al posto di Linq su Sql?
Ho un set di classi di business che sono responsabili della logica principale e stanno ottenendo dati da un database tramite interfacce e il provider di dati (che potrebbe implementare un'interfaccia) può essere impostato dalla configurazione.
Attualmente utilizzo LINQ come SQL come livello di accesso ai dati, ma più leggo su questo argomento, più sono convinto che dovrei usare un ORM più avanzato, perché LINQ to SQL non supporta alcune cose sarebbe molto buono per le prestazioni generali dell'applicazione. Ad esempio, memorizzazione nella cache e persistenza. (Ho letto che NHibernate, ad esempio, consulta solo con il database, se necessario, altrimenti ottiene semplicemente i dati dalla sua cache. - Questo è buono, perché in media un sito web non riceve nuovi contenuti per giorni, quindi invece di sprecando le prestazioni leggendo dal database su ogni richiesta, sarebbe giusto servirle da una cache.)
Sto pensando ad alcune opzioni e vorrei sapere cosa dovrei fare a riguardo.
- Scrivere la mia logica di persistenza per le mie classi di business e continuare a utilizzare LINQ su SQL.
- Usa NHibernate direttamente, o tramite il Castello di ActiveRecord o Fluent NHibernate
- usare qualche altro ORM
La mia scelta preferita sarebbe la seconda, perché NHibernate è più robusto di quello che mi serve, e ActiveRecord sembra nascondere la maggior parte della complessità. (E, a proposito, intendo anche usare Castle Windsor.)
L'unico problema è che non sono riuscito a trovare alcuna informazione sulle prestazioni di questi strumenti. Ho trascorso alcune ore a googling (e binging (e stavo cercando anche su questo sito)), ho trovato parecchi articoli e post sul blog, ma nessuno di questi ha detto nulla sulle prestazioni.
Sarà meglio della soluzione corrente o dovrei utilizzare qualcosa di diverso per l'attività?
Grazie in anticipo!
EF v4 con .NET 4 (fuori marzo 2010) rettificherà molte delle imperfezioni di EF1 - sicuramente vale la pena dare un'occhiata –
Grazie! E che dire di ActiveRecord o Fluent NHibernate? Dovrei usare quelli per rendere NHibernate un po 'più facile? – Venemo
Fluent NHibernate è bello se sei bloccato a mappare i file. Quando ho imparato Nibernate, non ho inserito i file XSD per gli schemi xml. Non ho davvero troppi problemi con l'XML dopo aver iniziato a usare i file XSD. Detto questo. Fluente NHibernate è davvero dolce e dovresti dare un'occhiata a questo. Ciò detto, Fluent NHibernate è un'altra cosa da imparare. Se si finisce per avere problemi con la normale mappatura di nhibernate, allora usare fluentemente. – Min