Ich muss zugeben, ich hab bis jetzt noch nie eine solche DB verwendet, aber soweit ich das richtig verstehe benötigt eine service-based database immer einen SQL Server im Hintergrund. Da du mit VS entwickelst, wird VS dadurch automatisch im Hintergrund die DB am MS SQL Server Express anlegen und darauf connecten. Zum testen und lernen ist's ok, aber ansich macht's nicht so viel Sinn imho.
Wenn du nur eine lokale DB brauchst, die wirklich nur für einen Benutzer benötigt wird, solltest eher eine local database verwenden (eigenes template im vs). Das ist ein anderes Format und benötigt keinen MS SQL Server, dafür hast halt keine Multiuserfunktionalität oder die ganzen Fähigkeiten von nem SQL Server.
Wenn du ins Install-Projekt dann einen MS SQL Server Express mitpackst, oder du vorraussetzen kannst, dass die User einen lokalen SQL Express laufen haben, kannst du natürlich das service-based template verwenden, in dem Fall würde ich allerdings die DB direkt am Server anlegen (über das Management Studio oder den Server Explorer im VS). Theoretisch sollt's egal sein, mir ist dieser Weg über die templates nicht bekannt und kommt mir einfach ein wenig seltsam vor
Soweit mal die Theorie, jetzt bissl zur Praxis:
Ich bin ein Fan von LINQ (language integrated query) von daher werd ich dir nur den LINQ-Lösungsansatz zeigen.
Wenn du die DB so angelegt hast wie ich atm glaube, dann sollte die bei dir im Server Explorer aufscheinen. Füg eine "Linq-to-SQL" Klasse deinem Projekt hinzu, default name is "DataClasses1.dbml". Der Designer geht auf und zeigt dir zuerst mal nichts. Aus dem Server-Explorer ziehst du jetzt alle Tabellen aus deiner Datenbank auf die weiße Fläche im Designer, VS generiert dir jetzt den DataContext. (die Klasse brauchst du um mit linq auf die DB zuzugreifen)
Wenn du das hast, steht die Verbindung zur DB. Ab jetzt kannst du die DB aus deiner Applikation im Code ganz einfach ansprechen:
using (DataClasses1DataContext dc = new DataClasses1DataContext())
{
var res = (from customers in dc.tbl_Customers
where customers.CustomerId == 2
select customers.CustomerName).FirstOrDefault();
label1.Text = res;
}
Erklärung zum Code:
Falls dir das using-statement nicht bekant ist: link
Ich hab in meiner DB eine Tabelle tbl_Customers, "customers" ist der variablen name für die Tabelle im linq context (frei wählbar). Das tolle an LINQ ist, dass du IntelliSense während dem Schreiben der Query hast, also einfach immer fleißig "." drücken, dann findest dich schnell zurecht.
Die Query würde dir jetzt einfach den Namen des Customers mit ID=2 zurückgeben.
Zum Schluss noch: Ich bin mir nicht ganz sicher was du machen möchtest, von daher kanns sein dass ich nen völligen Schwachsinn geschrieben habe, in dem Fall tut's mir Leid Es gibt auch mehrere Möglichkeiten wie du dein Vorhaben realisieren kannst, ich bin halt wie gesagt ein Fan von LINQ. Ich würd dir auch noch raten nicht zu sehr die DataSource-Fähigkeiten der unterschiedlichen GUI Designer zu verwenden, zumindest nicht in dem Ausmaß, lieber per Hand coden, ist mit LINQ sowieso kaum Aufwand
btw: LINQ geht gegen object, sprich du kannst mit dem dementsprechenden Adapter auch jedes control, xml oder webdienste wie flickr ansprechen
btw2: später wäre dann linq-to-entity dem linq-to-sql vorzuziehen