If this is your first time working with C#, you may even be better suited to get started by completely separating your code layer from the presentation layer. I started by playing around with UI's in both web and win forms apps rather than learning great coding practices and code separation. If you're starting from scratch, you can learn code separation first and not worry about what the UI is going to do.
So in short, neither. Start with good code separation between the database and the custom data classes and go from there.
This is by no means meant to be a perfect illustration of how to have good code separation, but more of a bulleted list of how you could go about getting started. You'd want to search for dependency injection, repository patterns, etc. for more of a best practice view...
For example, say you want to create a contact manager application. You know that you'll have code for inserts, updates, and deletes along with some searching and general lists of contacts.
- I would start by creating your DB with all of the fields you'll know you want.
- I would then add some dummy data to the database.
- Now I would create the data layer in my application. Probably best that this is a separate project all together that compiles to a simple DLL.
- Now that you have your data classes built for storing contact information, it is time to create your layer that will actually go and get the data. Goto your solution and add a new project that will compile into a DLL.
- Make sure the DB is available to your code.
a. LINQ2SQL
b. Enterprise Library
- Create functions for adding, editing, and deleting contacts. Most likely the parameter would be the Contact object that you created in #3.
- Create functions for searching and returning lists of contacts. This should return a List that gets created in #3 or something along these lines...
- Add whatever UI layer on top of this by referencing both DLL's in your UI project (could be console, web, win...)