violazioni di persistenza ignoranza

-5

Ho letto sul principio Persistenza Ignoranza, L'ebook fornisce alcuni esempi di violazioni di questo principio, ma non capisco. Potresti per favore aiutarmi a dare qualche spiegazione?

Some examples of violations of this principle include:
• A required base class
• A required interface implementation
• Classes responsible for saving themselves (such as the Active Record pattern)
• Required default constructor
• Properties requiring virtual keyword
• Properties forced to use certain types (for example, collection properties must expose
ICollection, not just IEnumerable)
• Persistence-specific required attributes
    
posta Chau Than 27.11.2017 - 03:57
fonte

1 risposta

3

Questo sembra "Non usare l'elenco ORM" di qualsiasi altra cosa. Poiché la maggior parte di quelle "violazioni" sono requisiti per utilizzare ORM come nHibernate e Entity Framework.

• Classes responsible for saving themselves (such as the Active Record pattern)

Questo è ovvio, in quanto il sapere di classe come persistere se stesso non è persistenza-ignorante. Ed è il modo in cui ORM ha funzionato in Ruby on Rails (inizialmente da quello che ricordo).

• A required base class

Nella versione precedente di Entity Framework, ogni entità, che doveva essere mantenuta nel database, doveva ereditare dalla classe base di Entity Framework. Questo è stato ampiamente criticato e la gente in realtà non lo usa.

• Required default constructor

• Properties requiring virtual keyword

• Properties forced to use certain types (for example, collection properties must expose ICollection, not just IEnumerable)

Questi sono i requisiti per una classe di essere persistibile usando nHibernate (e la versione 'nuova' di Entity Framework). Questo perché nHibernate crea una classe wrapper e aggiunge i listener di modifiche a tutte le proprietà, richiedendo quindi che siano virtuali, e deve anche essere in grado di creare la classe stessa, quindi è necessario il costruttore senza parametri.

La maggior parte delle persone accetta i requisiti imposti da nHibernate come male necessario, in quanto solo un'alternativa sta implementando il proprio livello di persistenza o duplicando le entità all'interno del livello di persistenza come DTO stupidi.

    
risposta data 27.11.2017 - 08:57
fonte

Leggi altre domande sui tag