I would suggest you read up the repository pattern. It allows you code to be written without having to consider the concrete implementations of the data access up front.
I would build these Interfaces into there own assembly along with a repository interface that defines the contract for retrieving data from the data store using the interfaces you have defined above.
Your application would use purely the interface definitions for data access and you can inject the concrete implementations of your repository and data objects using Unity or such like.
Also this will aid in unit testing your code as you could inject a test repository for testing business objects for example
See here for an example.