2010-04-16 14 views
9

Ich bin für einen .NET 3.5 ORM-Framework mit einer eher ungewöhnlichen Reihe von Anforderungen suchen:die Suche nach einem .Net ORM

  • I Tabellen zur Laufzeit mit Schemata von meinem Ende- erstellen müssen und ändern definiert Benutzer.
    (Offensichtlich würde das nicht stark typisiert werden; Ich suche nach etwas wie einer DataTable dort)
  • Ich möchte auch reguläre stark typisierte partielle Klassen für Zeilen in nicht dynamischen Tabellen, mit benutzerdefinierten Validierung und andere Logik. (Wie normale ORMs)
  • Ich möchte die gesamte Datenbank (oder einige ganze Tabellen) einmal laden und während der gesamten Lebensdauer der (WinForms) GUI im Speicher behalten. (Ich habe einen gemeinsamen SQL Server mit einer relativ langsamen Verbindung)
  • Ich möchte volle WinForms Datenbindungsunterstützung
  • Ich möchte auch regelmäßige LINQ-Unterstützung (wie LINQ-to-SQL) für ASP.Net auf dem freigegebenen Server (mit einer schnellen Verbindung zu SQL Server)
  • Zusätzlich zu SQL Server möchte ich auch in der Lage sein, eine Einzeldatei-Datenbank zu verwenden, die die XCopy-Bereitstellung unterstützt (ohne SQL Server auf dem Computer des Endbenutzers zu installieren). (Wahrscheinlich Access oder SQL CE)
  • Schließlich muss frei sein (es sei denn, es ist OpenAccess-)

Ich werde wahrscheinlich schreiben es selbst müssen, da ich nicht glaube, es besteht bereits eine ORM, dass erfüllt diese Anforderungen.
Allerdings möchte ich das Rad nicht neu erfinden, wenn es eines gibt, daher diese Frage.

Ich verwende VS2010, aber ich weiß nicht, wann mein Webhost (LFC) zu .Net 4.0

+0

@SLaks arbeiten Did Haben Sie jemals eine Lösung dafür gefunden?Ich habe ein offenes Kopfgeld auf dieser ähnlichen Frage: http://stackoverflow.com/questions/5092030/most-efficient-method-for-persisting-complex-types-with-variable-schemas-in-sql – smartcaveman

+0

@smart: I schrieb mein eigenes ORM. – SLaks

+0

@SLaks, hast du es öffentlich gemacht? – smartcaveman

Antwort

5

Upgrade ich glaube nicht, ein Rahmen wird es tun, aber auch brauchen Sie nicht das Rad neu erfinden.

Sie könnten ein normales ORM wie Entities Framework, NHibernate oder Subsonic für den nicht-dynamischen Teil verwenden und ein paar Ruby-Like-Migrations-Framework für den dynamischen Teil hacken.

Es sollte einfach sein, da diese Migrationsframeworks bereits alle Methoden für die Schemaänderung auf mehrere Datenbanken verteilt haben. Es geht nur darum, einige Klassen zu schreiben, um sie offenzulegen.

EDIT: Die Migrationen artigen Rahmen hierfür seien. „Ich brauche Tabellen zur Laufzeit mit Schemata von meinen Endnutzern (Offensichtlich definiert erstellen und ändern, die nicht stark typisierte wäre; ich bin auf der Suche nach so etwas wie ein Datatable dort)“

zum Beispiel mit sharp-migrations Sie so etwas wie schreiben:

DataClient.Add 
      .Table("TableName") 
      .WithColumns(
      Column.AutoIncrement("ID").NotNull().AsPrimaryKey(), 
      Column.String("NAME"), 
      Column.Date("DATESTART"), 
      Column.Int32("SOMENUMBER"), 
     ); 

wie Sie sehen können, ist es Strings, so dass Sie jede Tabelle zur Laufzeit erstellen .

Beifall und viel Glück,

André Carlucci

+0

Ich habe angefangen, mein eigenes Framework dafür zu schreiben; Es ist weitgehend ein freundlicher Klon von DataSet/DataTable (aber mit Unterstützung für Nullable-Typen, bessere Validierung, etc ...). Ich beabsichtige, die getippten Zeilenobjekte als POCOs für Entity Framework zu verwenden. – SLaks

+0

Was meinst du mit "Ruby-like Migrations Framework"? – SLaks

0

Sie bei ObjectDataBlocks aussehen könnte, wenn Sie bereit sind, einen Anbieter für SqlLite zu schreiben und die Query-Klasse aktualisieren mit LINQ,

+0

Es scheint keine Datenbindung zu unterstützen. – SLaks

+0

Sie können eine Liste von QueryDataAdapter.CreateList

+0

bekommen Eine 'Liste ' ist völlig nutzlos für Databinding. Ich möchte Ereignisse ändern, hinzufügen/entfernen, etc. – SLaks

Verwandte Themen