Come ho capito nell'architettura a 3 livelli, il livello di presentazione parla con il livello della logica aziendale, che parla con il livello di accesso ai dati. E, idealmente, il livello aziendale non conosce nulla sulla presentazione e il livello di accesso ai dati non conosce nulla sul livello aziendale. Voglio scrivere le classi per fare il lavoro di database CRUD che sono separati dalle classi di dominio. Ad esempio, Foo è una classe di dominio nel livello aziendale e voglio scrivere una classe PersistFoo che prenda gli oggetti Foo e CRUD. La mia domanda è (in qualche modo teorica?) Su quale livello è PersistFoo? Logicamente, appartiene al livello dati per me. Tuttavia, PersistFoo dipende da Foo (ad esempio legge il database e converte i dati in oggetti Foo e li restituisce). Quindi, se PersistFoo si trova nel livello dati, dipende dal livello aziendale, il che viola che i livelli inferiori non dovrebbero dipendere da livelli superiori.