This document discusses using interfaces to decouple application layers in an Entity Framework codebase. It presents a "clean repository pattern" where entities implement shared interfaces and contexts implement IRepository<T>. This allows swapping data layers easily. Sample code shows implementing domain logic through constructor injection without direct data layer dependencies. Performance of straight EF vs intercepted queries is compared. The approach allows independent development of UI, domain and data layers through abstraction.