Just wanted to know how others have layered their architecture. Say I have my layers as follows:
Domain Layer
--Product
--ProductService (Should the imp go
Your domain model shouldn't have a reference to ProductService nor to IProductRepository. If you create a new Product it has to be created through a factory - the Factory may use ProductService to get a product id.
In fact I'd wrap ProductService with an appropriate interface, such as IProductIdGeneratorService so that you can inject this into the factory using your IoC container.