2009-12-14 6 views
5

Ich bin im Entwurf meines Datenzugriffs für eine neue Lösung, die ich erstelle. Diese Lösung enthält jedoch Compact Framework Device Application und Bibliotheken neben Desktop. Alle .NET 3.5. Desktop wird grundsätzlich mit dem gesamten Datenzugriff umgehen. Ich brauche die Datenobjekte auch in CF zu haben, Desktop mit SQL kommunizieren und dann mit Mobile und den entsprechenden Daten geben ...LINQ to SQL in Compact Framework

ich LINQ lieben, und ich liebe LINQ 2 SQL. Es gibt eine Menge Hype da draußen und ich kaufe keine interne Microsoft-Politik bezüglich der Empfehlung von EF. Fürs Erste ist EF zu schwer und zu komplex, als dass jemand es wählen könnte, abgesehen davon, dass es sich immer noch weiterentwickelt und EF 4 wird sich in einigen Monaten stark verändern. Aber ich kann nicht Monate warten, um ein Projekt zu erstellen, wie jeder Entwickler hier, ich will jetzt etwas! Nachdem ich gesagt habe, dass ich LINQ 2 SQL verwenden möchte, ist mein Problem, dass ich nicht einfach die generierte dbml kopieren und die generierten Klassen verwenden kann. Ich brauche den DataContext nicht, weil ich nicht beabsichtige, CRUD oder irgendwelche Operationen auf einer Datenbank mit der Mobile App zu verwenden. Ich will nur die Objekte. War jemals jemand in einer solchen Situation? Der springende Punkt ist nicht, alle Klassen zu schreiben, die die Tabellen von Hand darstellen. Weil ich sie für weitere LINQ to Objects Manipulation brauche.

Grundsätzlich würde ein ORM, der CF unterstützt, die Aufgabe erfüllen! Aber ich kenne keine Inkompatibilitäten, die ich treffen würde.

Antwort

2

L2S funktioniert gut mit dem kompakten Rahmen. Sie können den Drag-and-Drop-Designer jedoch nicht verwenden. Sie müssen SQLMetal.exe selbst ausführen, um die Klassen für Sie zu generieren.

SqlMetal.exe: http://msdn.microsoft.com/en-us/library/bb386987.aspx

Beispiel mit Nordwind kompakten: http://blogs.msdn.com/sqlservercompact/archive/2007/08/21/linq-with-sql-server-compact-a-ka-dlinq-over-sql-ce.aspx

Ein weiteres Beispiel, mit vielen Bildern: http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx

+0

Ich brauche nicht eine SQL CE-Datenbank auf meinem Desktop-App verwenden, ich brauche nur die Klassen aus den Tabellen zu erzeugen, scheint, dass ich diese von Hand machen .... –

+0

Sie SQLMetal laufen zu bekommen die Objekte aus dem Datenspeicher, bearbeiten Sie dann die * .cs-Datei, die generiert wird. –

+0

Das ist eine Option. Sollte ich alle EntitySet und EntityRef in generische Sammlungen ändern, rate ich. –

0

Sie persistente Objekte DevExpress verwenden könnten (XPO) auf kompaktem Rahmen. Ich habe es vorher benutzt, aber fand es etwas langsam für meinen Zweck (Datensammlungsanwendung).

Der Grund, dass Sie nicht viel von diesem auf dem kompakten Rahmen ist, dass die Geschwindigkeit in der Regel so wichtig ist für die Geräte-Anwendungen finden können, dass Datenzugriffscode wird in der Regel manuell durchgeführt.

Ich weiß nicht, ob Sie Objekte aus einer bereits vorhandenen Datenbank mit XPO erstellen können.

+0

Vielen Dank für Ihren Vorschlag. –

3

Ich habe in der Lage gewesen, nach dem Hinzufügen der fehlenden Queryable Quellen und Matt Warren IQToolkit auf Codeplex SubSonic 3.0, den db4o/Mainsoft Hafen von System.Linq.Expressions aus dem Mono-Projekt zu ändern, um eine L2S äquivalent auf der CF. bereitzustellen

Dies ist über das, was es braucht, obwohl, da Linq Ausdruck Bäume auf .Net nicht unterstützt CF 3.5.

Ich war in der Lage, die DbEntityProvider/DbEntitySession und AttributeMapping/XMLMapping zu verwenden, die von IQToolkit in Subsonic importiert wurden, um bessere Unterstützung für Entitäts- und Tabellen-zu-Klassen-Mapping zu bieten.

+0

Ich denke, dies würde beim Kopieren der generierten Objekte aus der dbml-Datei unterstützen, aber ich habe diese Art von Wissen nicht. Was ist mit System.Data.Linq? Darin sind die EntitySet <> EntityRef <> Binäre Datentypen und alle Attribute, die ich denke. Wenn ich diese unterstützen könnte, denke ich, dass ich die Business Objects nicht manuell für die Geräte schreiben muss. Sehr guter Beitrag. –

0

Dies ist eine gute Option, die aus einfachen POCO-Klassen der dbml-Datei generiert, die mit LINQ 2 SQL arbeiten. Noch nicht getestet, scheint aber versprochen.

http://www.codeplex.com/ULinqGen