Codesmith è uno strumento ORM valida (o dovrei attaccare con un vero e proprio ORM) [chiusa]

StackOverflow https://stackoverflow.com/questions/583232

  •  06-09-2019
  •  | 
  •  

Domanda

Sono shopping per uno strumento ORM. Sono agonizzante oltre l'acquisto di una CodeSmith (che è attualmente disponibile con uno sconto sostanziale) rispetto a uno strumento ORM.

LINQ to SQL è fuori dalla mia lista; 2.x SubSonic è fuori dalla lista (non voglio investire in quel vicolo cieco sapendo che SubSonic 3.0 è in arrivo. NHibernate sembra eccessivo come fa LLBLGen. Ho solo brevemente valutato EF, ma non si ottiene rapidamente ottenere un sensazione di caldo e al sicuro da esso.

sto pensando folle che CodeSmith è una razionale alternativa al ORM off-the-shelf? Sarà CodeSmith pagare per se stessa in altri modi?

Si prega di notare che io sono in alcun modo collegato a qualsiasi fornitori e questo non è un colpo basso SO domanda solo per il gusto di generare rumore prodotto! Sto cercando consigli onesti e opinioni su CodeSmith come strumento ORM (con la sua condizione, o comunitari disponibili) modelli.

È stato utile?

Soluzione

In realtà, Hibernate è un buon strumento ORM. Ma si ferma lì!

capacità Codice Smith può essere più di un semplice personale mappatura relazionale! Io uso il codice fabbro per generare alcune forme di interfaccia utente, biglietti da strati (modelli), i livelli di accesso ai dati, modelli e così via. Ma per lavorare con il codice Smith, potrebbe essere necessario una buona esperienza con la progettazione del sistema o utilizzare i loro modelli che non mi piace usare ma mi piace come esempio.

approccio Codice Smith è uno svantaggio speciale; è necessario progettare il sistema in considerazione l'implementazione del database prima. Al giorno d'oggi, in oggetto approccio di analisi, le persone successo nella realizzazione della logica di business e le entità appena prima di qualsiasi implementazione del database - si dimenticano di questo

.

La decisione è difficile; Ho sempre letto i nomi importanti come Scott W. Ambler, Kent Beck, Robert C. Martin e persone provenienti da pragmatico serie programmatori che raccomanda ORM strumento per accelerare lo sviluppo. Hanno detto che gli sviluppatori ORM strumento si occupano di tutte le questioni di database (pooling, le connessioni, le specifiche di base di dati del fornitore, ecc). Così, quando dobbiamo progettare livelli di accesso ai dati che abbiamo di prendere in considerazione tutti questi aspetti troppo.

Credo che questi strumenti ORM vengono con un sovraccarico. Io non so ancora come questi strumenti sarebbero comportamento in progetti a basso budget (voglio dire, i server di hosting non buoni o qualsiasi tipo di risorse condivise). Ho visto gli sviluppatori meno esperti che non prendono in considerazione questo mentre cercano di evangelizzare i loro amati strumenti. Ma in progetti Java, Hibernate è già uno strumento diffuso e ben noto. Non ho alcun dubbio i grandi progetti è stato consegnato con questa tecnologia, ma ho visto nessuno e di nuovo sviluppatori Java possono avere bisogno di insegnare a noi (sviluppatori .NET) come costruire grandi soluzioni. (Scusate, dobbiamo ammettere.)

L'unica cosa che mi sento di raccomandare è quello di considerare il vostro contesto. State facendo un nuovo sistema? È necessario lavorare nel modello? Avete mai provato a prendere in considerazione tali strumenti generatore di codice e ORM del tutto?

io preferisco codice di Smith perché ho generare intere soluzioni in una sola volta, non solo strato di accesso ai dati. la generazione del codice è molto importante e non è da meno che Microsoft ha imitato il codice approccio fabbro in studio.net visiva 2008 e così via.

In bocca al lupo

Altri suggerimenti

Codice Smith non è un ORM, è solo un generatore di codice IDE.

È possibile generare un DAL utilizzando il codice smith basa il vostro database, ma che avrebbe sconfitto (uno dei) Ai fini dell'utilizzo di un ORM che è fondamentalmente che genera il DAL dinamicamente in modo da non dover scrivere il codice.

Se sei veramente cercando di confrontare i due, allora forse si potrebbe ottenere qualche beneficio utilizzando il codice fabbro, perché si avrebbe il controllo assoluto sul codice che viene generato, ma non sono sicuro che vantaggio sarebbe outweight l'inconveniente di quello che potrebbe rivelarsi essere spesa mesi per scrivere il codice fabbro modelli per generare un dAL basato fuori il database.

E poi si deve considerare che cosa succede quando si apporta una modifica al database, è molto probabile che per eseguire codice Smith e costruire ogni volta che lo fate. Un buon ORM vi permetterà di configurare le modifiche del database nello schema, e poi sarà generare dinamicamente in modo da non ci si deve preoccupare (tanto) su come apportare modifiche al database.

NHibernate è la strada da percorrere. Si tratta di un ORM di livello enterprise. E con la configurazione automatica convenzione basata dalla FluentNHibernate biblioteca, la configurazione è ridicolmente semplice se si tiene fede ad una convenzione unica (si arriva a indicare le convenzioni, o ci sono valori di default).

Con NHibernate, gli oggetti del dominio sono puri oggetti C #. Non ci sono classi di base strano. Nessun file codegenned che hanno bisogno di rinfrescarsi ogni volta che si decide di fare un cambiamento.

Io uso NetTiers quotidiana e lo amo. Documentazione per fa schifo, ma è stato un tale risparmio di tempo per me in ufficio. Un sacco di gente lamentela circa la quantità di codice che produce, ma da quello che ho visto, il codice che crea è molto più veloce di codifica manuale gran parte di essa. Esso genera anche tutti i sprocs di cui avrete bisogno per la vostra roba di base CRUD. I metodi di accesso che produce sono abbastanza impressionante come bene, ricevendo da tutte le vostre chiavi univoche, chiavi esterne e chiavi primarie.

Credo che l'utilizzo di Codesmith è praticabile. Ma si dovrebbe guardare in quadri che lo utilizzano. Tiers netti è un framework applicativo che può essere costruito su per mettere fuori un buon DAL.

Perché qualcosa come LLBLGen essere eccessivo? L'usiamo al lavoro, e dopo una curva di apprendimento piuttosto ripida, è molto bello :). Si dovrebbe almeno dare quella e NHibernate una prova.

Non sei sicuro di ciò che questo ha a che fare con CodeSmith però, questo è un CodeGenerator, si potrebbe rotolare il proprio ORM, ma dal momento che ci sono quelli già buoni là fuori, non penso che valga la pena il tempo e lo sforzo a meno che non si vuole farlo a fini di apprendimento.

Vai con NetTiers e .netMVP. NetTiers è un bel DAL e .netMVP è un framework Ho appena rilasciato per supportare l'astrazione a livello di interfaccia utente. :)

http://community.codesmithtools.com/CodeSmith/m/templates /42499.aspx

ho usato LLBLGen diversi anni fa. Spero che quello che ho visto è stato risolto. Abbiamo guardato lo SQL in-line che è stato prodotto e visto, per la selezione di una riga di dati con la chiave primaria passata in:

SELECT DISTINCT * FROM TABLE WHERE primark_key_id = @primarykey.

In realtà, distinti? Ho sempre pregato di fare procs negozio, invece, ma ciò che abbattuto dal responsabile del progetto. Non sono sicuro che ora è stato salvato da scrivere codice inefficiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top