A short note on architectures for WCF-based solutions - we've found this works for us.
All classes that are being passed across the wire must be serialisable and each property must be annotated.
The WCF service is nothing more than a thin facade on top of a call to Business Logic.
In fact it's a one-to-one relationship to the Business Logic calls... The Service layer just exposes the business logic so that it can be used in creating bindings, etc.
Business Logic - as they say, it "does the business" and calls the data access.layer.
Data Access Layer - we're using Repository pattern with Entity Framework.
Throughout, we've using IoC (Ninject) to hook data access repositories into the Business Layer and Business Logic into the Service Layer. This has meant inserting Ninject into the WCF factory pipeline - see this post.
OK, you may ask why create a WCF facade on top of the business logic?
Well, doing this lets you create clean classes and "unit" tests for the business logic without bothered about annotations, etc for WCF.
It also means that the Business Logic layer becomes a re-usable component - where you don't have to include WCF-related annotations and dlls.