2010-04-16 21 views
9

Busco un marco ORM 3.5 .Net con un conjunto bastante inusual de requisitos:Buscando un .Net ORM

  • Necesito crear y modificar tablas en tiempo de ejecución con esquemas definidos por mi End- usuarios.
    (Obviamente, no estaría fuertemente tipado; estoy buscando algo así como una DataTable allí)
  • También quiero clases parciales fuertemente tipadas regulares para filas en tablas no dinámicas, con validación personalizada y otras lógica. (Como ORMs normales)
  • Quiero cargar la base de datos completa (o algunas tablas enteras) una vez, y mantenerla en la memoria durante la vida de la GUI (WinForms). (Tengo un servidor SQL compartido con una conexión relativamente lenta)
  • Quiero soporte completo de enlace de datos WinForms
  • También quiero soporte LINQ regular (como LINQ-to-SQL) para ASP.Net en el servidor compartido (que tiene una conexión rápida a SQL Server)
  • Además de SQL Server, también deseo poder utilizar una base de datos de un solo archivo que admitiría la implementación de XCopy (sin instalar SQL Server en la máquina del usuario final). (Probablemente Access o SQL CE)
  • Por último, tiene que ser libre (a menos que sea OpenAccess)

probablemente voy a tener que escribir yo mismo, ya que no creo que haya un ORM existente que cumple con estos requisitos.
Sin embargo, no quiero reinventar la rueda si la hay, de ahí esta pregunta.

estoy usando VS2010, pero no sé cuando mi servicio de hosting (LFC) se actualizará a .Net 4.0

+0

@SLaks, DID ¿alguna vez se te ocurrió una solución a esto?Tengo una recompensa abierta por esta pregunta similar: http://stackoverflow.com/questions/5092030/most-efficient-method-for-persisting-complex-types-with-variable-schemas-in-sql – smartcaveman

+0

@smart: I escribí mi propio ORM – SLaks

+0

@SLaks, ¿hay alguna posibilidad de que lo hiciera público? – smartcaveman

Respuesta

5

No creo que un solo marco lo hará, sino también que no es necesario para reinventar la rueda.

Puede usar un ORM normal como Entities Framework, NHibernate o Subsonic para la parte no dinámica y hackear algunas estructuras ruby-like-migrations para la parte dinámica.

Debería ser fácil ya que estos marcos de migraciones ya tienen todos los métodos para la modificación del esquema asignados a varias bases de datos, solo es cuestión de escribir algunas clases para exponerlos.

EDIT: El marco de las migraciones como sería para esto:. "Tengo que crear y modificar tablas en tiempo de ejecución con esquemas definidos por mis usuarios finales (Obviamente, que no sería inflexible; Busco algo así como un DataTable allí)"

por ejemplo, con sharp-migrations se puede escribir algo como:

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

como se puede ver, se trata de utilizar las cadenas para que pueda crear cualquier tabla en tiempo de ejecución .

Saludos y buena suerte,

André Carlucci

+0

Comencé a escribir mi propio marco para esto; es en gran medida un clon más amigable de DataSet/DataTable (pero con soporte para tipos anulables, mejor validación, etc.). Planeo permitir que los objetos de fila mecanografiados se utilicen como POCO para Entity Framework. – SLaks

+0

¿Qué quiere decir con "marco de migración de ruby-like"? – SLaks

0

usted podría mirar a ObjectDataBlocks si usted está dispuesto a escribir un proveedor de SqlLite y actualizar la clase de consulta para trabajar con LINQ

+0

Parece que no admite el enlace de datos. – SLaks

+0

Puede obtener una lista de QueryDataAdapter.CreateList

+0

Obtener una 'Lista ' es completamente inútil para el enlace de datos. Quiero eventos de cambio, agregar/eliminar seguimiento, etc. – SLaks