Laden...

Linq - SQL Server Compact - Visual Studio 2010

Erstellt von jaipur vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.722 Views
J
jaipur Themenstarter:in
127 Beiträge seit 2007
vor 13 Jahren
Linq - SQL Server Compact - Visual Studio 2010

hallo liebe gemeinde,

zuerst einmal möchte ich euch nach langer abstinenz wieder recht herzlich begrüßen, denn ich freue mich endlich wieder hier mitreden zu dürfen ...ich war sonst zu den visual studio 2005 zeiten hier ...und dann gleich mit schweren geschütz aufschlagen wie VST2010 und MSSQL2008R2 😉

jetzt aber zu meinem problem:

ich habe eine kleine datenbank anwendung geschrieben, bei dieser datenbank
handelt es sich um eine sql server compact 3.5 sp2 anwendung - also eine *sdf datei. aus der anwendung heraus kann ich datenbanken erstellen und auch öffnen und werte in tabellen anzeigen und bearbeiten ..klappt "eigentlich"

aber bis jetzt habe ich alles immer zu fuß erledigt ...daher dachte ich mir es wäre doch mal an der zeit auch mal mit linq zu arbeiten und mir ein wenig arbeit abnehmen zu lassen - also so richtig professionell 😄

und wie sollte es denn auch anders sein: schon komm ich im moment nicht vorwärts:

  • wie und womit verbinde ich überhaupt die datenbank?
  • wie und womit verknüpfe ich überhaupt meine form mit den tabellen?

mfg
jaipur

S
902 Beiträge seit 2007
vor 13 Jahren

Hallo,

wenn du Linq verwenden möchtest, weiss ich grad nicht, ob du LinqToSql meinst?!
Wenn ja, musst du für deine .sdf eine dbml Datei erstellen.Das machst du mit sqlmetal.
In der generierten datei ist dann ein DataContext, welcher die Verbindung zu deiner DB regelt.

Zur datenbindung an form-elemente gibt es mehrere möglichkeiten.
MVP wäre ein stichwort. Normales databindung mit Linqentitäten sollte aber auch funktionieren, da diese standardmäßig InotifyPropertyChanged implementieren.

mfg
serial

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo jaipur,

das geht z.B. mit "LINQ to SQL Classes". Beim Anlegen eines neuen Items einfach das aufwählen. Von dort aus kannst du dann einfach die Tabellen hinzufügen. Dort kann man dann auch den ConnectionString anpassen.

zero_x

J
jaipur Themenstarter:in
127 Beiträge seit 2007
vor 13 Jahren

hallo,

hm - ich habe schon einiges gelesen. auch das ich aus der sdf zuerst eine dbml machen muss, aber das gilt nur für visual studio 2008?

denn wenn ich - ohne zu wissen was das überhaupt ist - ein dataset zu einer tabelle erstelle kann ich folgendes im quelltext ausführen:
var q = from k in dbStormDataSet1.tblTest where k.MpiLocal == 0 select k;

bei den ganen beispielen in diversen blogs muss ich immer wieder feststellen, das es sich immer wieder um den gleichen beitrag aber von vorschiedenen authoren hadelt ...ohne hier aber irgendjemanden etwas böses unterstellen zu wollen!

"LINQ to SQL Classes" - deine beschreibung hört sich simple an - was ist das und wie geht das 😃 ?

S
902 Beiträge seit 2007
vor 13 Jahren

Hallo,

natürlich kannst du mit linq auf die erzeugten datasets zugreifen.
Darum ja meine frage, ob du LinqToSql verwenden möchtest, also die Tabellen mit dem O/R Mapper ansprechen willst, oder nicht! Denn in der dbml befinden sich dann diese "Sql-Classes", welche für jede Tabelle inkl Assoziationen erstellt werden.
Damit hättest du dann deine DB-Daten in Programm als Objekte zur Verfügung.

mfg
serial

J
jaipur Themenstarter:in
127 Beiträge seit 2007
vor 13 Jahren

@serial: du hängst mich gleich mit deinem ersten satz ab - ich komme nicht hinterher!

ich kann dir zur zeit nicht mal sagen ob ich LinqToSql benutzen möchte, also die tabellen mit dem O/R Mapper ansprechen möchte... weil ich die ganzen sachen noch nicht so recht einordnen kann!? woher soll ich denn jetzt auch noch wissen das ich natürlich auf die erzeugten datasets zugrefen kann wo ich denn nicht mal weiß was ein dataset ist.

in einem video tutorial habe ich ein beispiel gesehen, wo jemand von dem server explorer einfach die tabellen von der datenbank in so eine "Linq To Sql Classes" dbml datei gezogen hat.

...das ging bei mir schon mal mit der compact datenbank nicht. wenn ich von dort eine tabelle in die dbml ziehe, denn bekomme ich eine fehlermeldung: "unsupported data provider"

...was mir jetzt sagen würde das ich - wie du bereits erwähnt hattest - das ich aus der sdf mit hilfe von sqlmetal eine dbml erzeugen muss? also das linq im visual studio 2010 genau so wie bei visual studio 2008 keine compacten datenbanken unterstützt?

...sorry das ich euch im moment ein bisschen quäle - bin aber sicher das wir es bald geschafft haben 😉

156 Beiträge seit 2010
vor 13 Jahren

Hallo,

so erstellst du eine dbml-Datei mit sql-metal


SqlMetal.exe MyDatabase.sdf /dbml:MyDatabase.dbml

und hier wird es sogar beschrieben:

LINQ to SQL Server Compact Database

S
902 Beiträge seit 2007
vor 13 Jahren

Ob der designer in VS2010 Sql CE unterstützt weiss ich nicht, glaub ich aber nicht!
Wie du deine dbml datei erzeugst, hat xrc7581 schon gezeigt.

Mein erster satz sollte darauf hinauslaufen, dass du linq natürlich auf alle IEnumerables verwenden kannst! Linq hat ja prinzipiell nix mit datenbanken zu tun. Sondern ist eine sprache um objekte anzusprechen.

mfg
serial