2010-04-16 12 views
9

Sto cercando un quadro 3,5 ORM Net con una serie piuttosto insolito di requisiti:Alla ricerca di un Net ORM

  • ho bisogno di creare e modificare le tabelle in fase di runtime con schemi definiti dal mio finale utenti.
    (Ovviamente, non sarebbe fortemente tipizzato, sto cercando qualcosa come un DataTable)
  • Voglio anche regolari classi parziali fortemente tipizzate per righe in tabelle non dinamiche, con convalida personalizzata e altro logica. (Come normali ORM)
  • Voglio caricare l'intero database (o alcune intere tabelle) una volta e tenerlo in memoria per tutta la durata della GUI (WinForms). (Ho uno SQL Server condiviso con una connessione relativamente lenta)
  • voglio WinForms pieno di associazione dati di supporto
  • voglio anche il supporto LINQ regolare (come LINQ to SQL) per ASP.Net sul server condiviso (che ha una connessione veloce a SQL Server)
  • Oltre a SQL Server, voglio anche essere in grado di utilizzare un database a file singolo che supporta la distribuzione XCopy (senza installare SQL Server sul computer dell'utente finale). (Probabilmente Access o SQL CE)
  • Infine, deve essere libero (a meno che sia OpenAccess)

Io probabilmente devo scrivere io stesso, come non credo che ci sia un ORM esistente che soddisfa questi requisiti.
Tuttavia, non voglio re-inventare la ruota se ce n'è una, quindi questa domanda.

sto utilizzando VS2010, ma non so quando il mio webhost (LFC) sarà l'aggiornamento a .Net 4.0

+0

@SLaks, Did hai mai trovato una soluzione a questo?Ho una taglia aperta su questa domanda simile: http://stackoverflow.com/questions/5092030/most-efficient-method-for-persisting-complex-types-with-variable-schemas-in-sql – smartcaveman

+0

@smart: I ha scritto il mio ORM. – SLaks

+0

@SLaks, hai qualche possibilità di renderlo pubblico? – smartcaveman

risposta

5

Non credo che un quadro lo farà, ma anche che non è necessario reinventare la ruota.

È possibile utilizzare un normale ORM come Entities Framework, NHibernate o Subsonic per la parte non dinamica e modificare un framework di migrazione di tipo ruby ​​per la parte dinamica.

Dovrebbe essere facile poiché questi framework di migrazione hanno già tutti i metodi per la modifica dello schema mappati su diversi database, è solo questione di scrivere alcune classi per esporle.

EDIT: Il quadro migrazioni simile sarebbe per questo:. "Ho bisogno di creare e modificare tabelle in fase di runtime con schemi definiti dai miei utenti finali (Ovviamente, questo non sarebbe strongly-typed; sto cercando qualcosa di simile a un DataTable lì)"

ad esempio, con sharp-migrations è possibile scrivere qualcosa di simile:

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

come si può vedere, che sta utilizzando le stringhe in modo da poter creare qualsiasi tavolo in fase di esecuzione .

Saluti e buona fortuna,

André Carlucci

+0

Ho iniziato a scrivere il mio framework per questo; è in gran parte un clone di DataSet/DataTable più amichevole (ma con supporto per tipi nullable, migliore convalida, ecc ...). Prevedo di consentire che gli oggetti riga digitati vengano utilizzati come POCO per Entity Framework. – SLaks

+0

Che cosa intendi per "quadro di migrazioni simili a rubini"? – SLaks

0

si poteva guardare ObjectDataBlocks se si è disposti a scrivere un provider per SqlLite e aggiornare la classe di query per lavorare con LINQ

+0

Non sembra supportare il databinding. – SLaks

+0

È possibile ottenere un elenco da QueryDataAdapter.CreateList

+0

Ottenere un 'Elenco ' è completamente inutile per l'associazione dati. Voglio cambiare eventi, aggiungere/rimuovere tracciamento, ecc. – SLaks

Problemi correlati