2009-06-16 2 views
1

Ich wurde beauftragt, unsere .NET Desktop-Anwendung auf ein mobiles Gerät zu portieren. Unsere Desktop-Anwendung verwendet LINQ to SQL, um mit der Datenbank zu interagieren. LINQ to SQL ist jedoch nicht auf mobilen Geräten verfügbar. Wir entwickeln für Windows Mobile 5 und 6.LINQ zu SQL-Ersatz in .NET Compact Framework

Ich diskutiere zwischen dem Vorschlagen eines anderen ORM, das sowohl Desktop als auch Mobile out of the box unterstützt (http://www.entityspaces.net/portal/ scheint das Beste für mich). Da unsere Datenbanken jedoch relativ klein sind (eine davon ist relativ einfach an 10 Tabellen; die andere ist 27 Tabellen, aber die Assoziationen sind komplexer), stütze ich mich mehr darauf, die Domänenobjekte und Datenzugriffsfunktionen selbst neu zu codieren.

Hat sich noch jemand in dieser Situation befunden? Welche Wahl hast du getroffen?

Antwort

1

Mein Team verwendet T4 zum Generieren grundlegender CRUD-Operationen basierend auf der Struktur der Datenbank und den Konventionen, die wir verwenden, um unsere POCO-Klassen und -Eigenschaften SQL Compact-Tabellen und -Spalten zuzuordnen. Es ist ein bisschen Arbeit, aber es funktioniert gut.

+0

Danke. Ich entschied mich, POCO-Klassen/-Eigenschaften mit LINQ to Objects zu verwenden, da die DB nicht zu groß ist. Ich werde einen Blick in T4 werfen, da dies uns die Arbeit erleichtern könnte. – chocojosh

2

Ich kann LLBLGen persönlich empfehlen. Sie haben CF-Framework-Unterstützung für v1.0 & 2.0. Die Zuordnung von Tabellen ist sehr schnell und die resultierenden Entitäten können sowohl auf Mobilgeräten als auch auf Desktop-Computern verwendet werden. Es ist auch nicht teuer und hat eine lange Erfolgsbilanz. Je nach Ihren Anforderungen wäre das der schnellste Weg dorthin. In POCOs (einfachen alten CLR-Objekten) und mit Linq zu Objekten zu tun wäre machbar, würde aber viel länger dauern.

2

Hier sind zwei weitere Möglichkeiten für Sie:

http://www.llblgen.com/defaultgeneric.aspx

http://www.devexpress.com/Products/NET/ORM/info.xml

Persönlich habe ich noch nie LINQ verwendet auf dem Compact Framework auf SQL-, das einzige, was habe ich getan, das ist In der Nähe war Linq zu Sql gegen SqlCe auf dem Desktop.

Je nachdem, wie fehlerhaft Ihre Datenschicht ist, kann es sich sehen lassen, wenn Sie eines dieser ORMs verwenden und sehen können, wie viel von Ihrem vorhandenen Code wiederverwendbar ist. (abhängig von der Größe des Projekts)

+0

+1 für uns faul Leute den tatsächlichen Link geben – ctacke

+0

LLBLGen er nie LINQ verwendet wird auf der Compact Framework auf SQL, weil es nicht unterstützt wird. – trampster

1

Sie können linq nicht direkt mit SqlServerCE sql verwenden. Mit CF haben Sie nur die Objekte linq to Xml, Linq to DataSet und Linq to objects verfügbar. Ich arbeite an einer mobilen App und weil ich Daten mit einem SqlCeResultSet-Objekt konsumiere, und weil dieses Objekt IEnumerable implementiert, können Sie Linq damit verwenden.

vielleicht kann dieser Ihnen helfen

http://www.pluralsight.com/community/blogs/jimw/archive/2008/02/27/50325.aspx

+0

Interessant. Ich bin kein Experte für Leistung mit ADO.NET.Im Moment verwende ich einen SqlCeDataReader, um Ergebnisse zu durchlaufen und eine Liste als Liste <> zu erstellen, die mit LINQ verwendet werden kann. Planen Sie die Verwendung von Lazy Load auch zur Leistungssteigerung. – chocojosh