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.