Pregunta

En una aplicación web como wiki, foros o software de blogs, suele resultar útil almacenar los datos en una base de datos relacional.Dado que muchas empresas de alojamiento ofrecen una única base de datos con sus planes de alojamiento (con bases de datos adicionales que cuestan más), es muy útil para sus usuarios cuando los objetos de su base de datos (tablas, vistas, restricciones y procedimientos almacenados) tienen un prefijo común.Es típico que las aplicaciones conscientes de la escasez de bases de datos tengan un prefijo de tabla codificado.Quiero más, sin embargo.Específicamente, me gustaría tener un prefijo de tabla que los usuarios puedan designar, por ejemplo en el archivo web.config (con un valor predeterminado apropiado, por supuesto).

Ya que odio codificar CRUD operaciones a mano, prefiero trabajar a través de un OR/M competente y he usado (y disfrutado) LINQ to SQL, Subsonic y ADO.Net.Sin embargo, estoy teniendo algunos problemas en un nuevo proyecto cuando se trata de poner un prefijo de tabla en el archivo web.config de un usuario.¿Existe algún producto OR/M basado en .Net que pueda manejar este escenario con elegancia?

Lo mejor que se me ha ocurrido hasta ahora es usar LINQ to SQL con un archivo de mapeo externo que tendría que actualizar de alguna manera en función de una configuración web.config aún hipotética.

¿Alguien tiene una mejor solución?Intenté hacerlo realidad en Entity Framework, pero rápidamente se convirtió en un desastre.(¿Debido a mi desconocimiento de EF?Posiblemente.) ¿Qué tal SubSonic?¿Tiene una opción para aplicar un prefijo de tabla además en el momento de la generación del código?

¿Fue útil?

Solución

Ahora he investigado qué se necesita para hacer esto tanto en Entity Framework como en LINQ to SQL y documentó los pasos requeridos en cada.Es mucho más largo de lo que suelen ser las respuestas aquí, por lo que me contentaré con un enlace a la respuesta en lugar de duplicarlo aquí.Es relativamente complicado para cada uno, pero LINQ to SQL es la solución más flexible y también la más fácil de implementar.

Otros consejos

Velocidad de la luz le permite especificar un Estrategia de nombre que le permite resolver nombres de tablas dinámicamente en tiempo de ejecución.

En lugar de utilizar prefijos de tabla, tenga un usuario de aplicación que pertenezca a un schema (en MS Sql 2005 o superior).

Esto significa que en lugar de:

select * from dbo.clientAProduct
select * from dbo.clientBroduct

Tienes:

select * from clientA.Product
select * from clientB.Product
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top