I am trying to keep my domain layer as "pure" as possible without weaving in persistence or other infrastructure concerns. However, there are times when my domain layer needs to use the services of either an RDBMS or other external dependency and I'm not sure how to deal with it.
For example, each domain object in my app implements an IValidatable interface which is invoked by clients to a get a list of broken rules that prevent the object from being persisted. In a few cases, the aforementioned validation routine involves making a call to a DAO class to check on the existence of a specific record. We are not using an ORM; instead we use a persistence layer built using the Data Access Object pattern. Should I just create a service/wrapper class around this database access and have my domain object collaborate with it? Is adding this level of indirection acceptable or am I still polluting my domain object?