No, the design is completely the other way around. You will create one Windows Forms Application project, which will contain all your presentation logic, and one Class Library project, which will contain the rest. The WinForms project is the application, i.e. the EXE, and it will reference the DLL. That means that your forms will know about your business logic but NOT the other way around. The business logic and data access code has no idea that it's being used by forms, which is the whole point. You're supposed to be able to use that same code in any application, whether WinForms, ASP.NET, WPF, Windows Service or whatever. So, you run the app, the form invokes the appropriate business logic and that simply returns the data, with no specific knowledge of who it's returning it to.