È meglio? Ho ascoltato l'estensione CodeFirst ma è pronta per l'uso. Si prega di condividere la vostra esperienza con lo sviluppo, eventuali spese di prestazioni, eccCome si confronta EF4 con NHibernate?
risposta
Penso che questa sia una domanda puntuale, come mi chiedevo la stessa cosa. Sto cercando di creare un serio modello di e-commerce e sto cercando di mantenere i miei POCO privi di problemi di persistenza, oltre a cercare di rimanere fedele a Domain Driven Design. Finora, sono molto prudente, e sono fuori di testa se dovrei saltare la nave a NHibernate. L'unica cosa che mi impedisce di farlo è che presumo che Microsoft migliorerà (e rapidamente).
Alcuni dei più grandi problemi finora:
- Incapacità di finemente materializzazione oggetto di controllo. EF chiama il costruttore zero-arg sul tuo POCO, e questo è un comportamento che non puoi cambiare.
- Nessun supporto enum. La comunità ha urlato - urlando! - per questo, e non è successo. I workaround sono terribili e inquinano il tuo modello di dominio.
- bug mappatura strano quando si cerca di controllare i nomi delle colonne e le relazioni nel database. I principali a cui riesco a pensare sono le chiavi composte e le relazioni molti-a-molti. Questi possono essere risolti, e presumo che questi saranno fissati dal tempo di rilascio, ma sono comunque frustranti.
- SQL non valido. Faccio anche il DBA e l'SQL che EF genera (con o senza Code-First) è atroce.
E questa è solo la punta dell'iceberg: sto solo iniziando a imparare EF4 e sto correndo in posti di blocco terribili. Poiché penso a più motivi, li aggiungerò qui. Ci sto ancora lottando.
(mi chiedo se la comunità darà un altro voto di "sfiducia".)
Più:
- Per aggiungere al problema "Weird bug mappatura": non è possibile controlla il nome di una colonna se partecipa a una relazione autoreferenziale (ad esempio, se hai una gerarchia). Presumo che questo sarà risolto nella versione finale.
- Mancanza di dosaggio, con conseguente più andata e ritorno al database. Ad esempio, come si elimina un gruppo di elementi da una raccolta? Caricare tutte le entità in memoria ed eliminarle una alla volta. Un piccolo difetto è il numero di accessi al DB durante l'inserimento in tabelle che partecipano a una relazione di ereditarietà.
- No modo intelligente per affrontare le modifiche del modello. Codice EF: per prima cosa, ad esempio, elimina completamente l'intero database se è necessario modificare lo schema.
- punti di estendibilità pochi. Puoi letteralmente contare su una sola mano il numero di eventi a cui EF4 ti permette di iscriverti (e Code-First non fornisce molto di più).
Quanto a me - preferisco EF, ma con alcuni miglioramenti.Fondamentalmente EF vi offre i seguenti vantaggi:
- Visual Model Editor
- Database/Modello Aggiornamento procedura guidata (al posto di modifiche manuali XML - ciò che è terribile per me)
Inoltre, io sono utilizzando strumenti 3-rd parti commerciali a base di EF e L2S (LinqConnect) che forniscono per me le seguenti caratteristiche:
- Geography support
- Optimized SQL generation
- prodotto assolutamente integrato di Visual Studio
- Aggiornamento guidato intelligente del database (modalità di sincronizzazione)
- 1. Come si confronta FlockDB con neo4j?
- 2. Come si confronta C - con LLVM?
- 3. Come si confronta Elm con ClojureScript?
- 4. come funziona netezza? come si confronta con Hadoop?
- 5. Confronta unica data in NHibernate Linq su un valore DateTime
- 6. Come Smalltalk (Pharo per esempio) si confronta con Python?
- 7. Come si confronta il ridimensionamento di PostgreSQL con MongoDB?
- 8. Come si confronta ironpython con altri linguaggi .net?
- 9. Come si confronta Tir con altri framework web Lua?
- 10. Come si confronta la finestra mobile con openshift?
- 11. Come si confronta un ramo con il tronco in sovversione?
- 12. Come si confronta superficiale lavoro reagire
- 13. Come si aggiunge una colonna calcolata al modello EF4?
- 14. NHibernate - Sinistra si unisce
- 15. Come aggiungere NOLOCK con nHibernate?
- 16. Come fare multipla si unisce con NHibernate criteri API
- 17. Come si usa Fluent NHibernate con .NET 4.0?
- 18. Fluent NHibernate Visual Designer
- 19. Confronta date con javascript
- 20. Come "Select" con queryover NHibernate
- 21. Come integrare NHibernate con Lucene.Net
- 22. Confronta date con Parse.com
- 23. Confronta SWT con SWING
- 24. Come utilizzare correttamente InOut ObjectParameter in EF4?
- 25. EF4 restituisce valori errati quando si seleziona dalla visualizzazione sommario
- 26. Generare database con Nhibernate usando Fluent NHibernate
- 27. Come Python OOP confronta con PHP OOP?
- 28. Relazioni database cross EF4
- 29. EF4 Associazioni indipendenti - Perché evitarli?
- 30. interrogazione Complesso con NHibernate
Questo è molto interessante e utile. Spero di più che la gente commenta prima che i troll chiudano questo thread. –
Vorrei anche saperne di più, dato che sono/molto/in conflitto sull'impegno con il codice EF4. – anon
Questa è una lista molto buona. Tutti i punti validi che ho sperimentato negli ultimi mesi. Ho anche aggiunto la mancanza di supporto per il tipo di dati "GEOGRAFIA" di EF4 (SQL Server) e l'impossibilità di passare i tipi di tabella definiti dall'utente (anche SQL Server) ai processi memorizzati. Per combattere il primo, ho dovuto usare i grilletti, per combattere il secondo ho degaraded al classico ADO.NET. – RPM1984