Pregunta

Estoy iniciando una nueva aplicación web. Va a estar alojado en un servicio que cobra extra por SQL Server y, francamente, no creo que el sitio necesite tanta base de datos. En este momento el modelo de datos es de 5 tablas. Y me sorprendería si la tabla más grande tiene 10k registros.

Así que me gustaría mantener el db ligero. SQLite despertó mi interés originalmente porque necesito aprenderlo para Android. Pero la falta de claves foráneas me da escalofríos. Claro que es posible implementar algo que parezca restricciones de clave externa, pero simplemente no parece relacional. Firebird parece ser el único db ligero (y gratuito) que admite FK.

Además, realmente me gustaría mojarme los pies en LINQ con este proyecto. Hasta ahora solo he encontrado dbLINQ que me permite usar SQLite o Firebird con LINQ. Actualmente está en v0.18, por lo que está lejos del horario estelar. He ejecutado las pruebas para SQLite con dbLinq y pasan por lo que necesito.

Hubo otra implementación de LINQ para SQLite, pero todos los enlaces que he encontrado terminan en 404s.

¿Cuáles son mis opciones para bases de datos livianas que son compatibles con LINQ? ¿Alguna de las ediciones compactas de SQL Server está disponible, a menos que haya una que sea XCOPY desplegable sin instalación de un agente / servicio ? No puedo pedirle al host que instale un nuevo software, ya que dudo que lo hagan y quiero que la aplicación sea altamente portátil (con respecto al alojamiento).

La lista hasta ahora:

  • SQLite
  • Firebird
  • SQL Server Compact
  • VistaDB

Actualización: Probé todas las versiones y escribí mis impresiones aquí . La versión corta: SQLite gana sin dudas. Es el único que tiene una buena GUI, no tiene huella de instalación y es gratis.

¿Fue útil?

Solución 4

SQLite. Tiene una buena GUI (con auto-freakin-complete no menos), no tiene huella de instalación, es gratis y funcionará independientemente de dónde aloje el sitio web. Sé que estoy respondiendo mi propia pregunta, pero nadie más puso solo SQLite en su respuesta.

Importante : SQLite requerirá un proveedor de alojamiento web que utilice el modo Full-Trust si desea ejecutarlo en un alojamiento compartido.

Otros consejos

Puede usar LINQ to SQL tal como está en una base de datos existente, siempre y cuando pueda hacer un objeto IDbConnection estándar.

Aquí hay un código para usar LINQ en un Firebird DB.

DbProviderFactory dbProvider = DbProviderFactories
    .GetFactory("FirebirdSql.Data.FirebirdClient");

DbConnection connection = dbProvider.CreateConnection();
connection.ConnectionString = "some connection string";

DataContext linqContext = new DataContext(connection);

var query = from something in linqContext.GetTable<SomeType>() 
            select something.someproperty;

SQL Server Compact Edition ( http://en.wikipedia.org/wiki/SQLCE) admite LINQ y todas las demás herramientas VS, está integrado en VS 2008, admite FK y es XCOPY desplegable con un archivo plano para una base de datos. Sin embargo, tenga en cuenta que no está exento de advertencias, se caen muchas cosas, como vistas o consultas anidadas, y puede estar bastante hinchado si comienza a obtener un tamaño de base de datos bastante grande (es decir, 50 MB +).

SQLite también es mucho mejor si usa el proveedor SQLite .NET aquí ( http: //sqlite.phxsoftware.com/ ), también funciona con LINQ y tiene soporte VS básico.

Sugeriría que eche un vistazo a VistaDB . Hará exactamente lo que está buscando con el beneficio adicional sobre SQLCE y SQLite que admite vistas, procedimientos almacenados y disparadores. De hecho, admite la escritura de procedimientos y desencadenantes en TSQL y en .NET para que pueda aprovechar su SQL Server Y su conocimiento .NET.

SQL Server Express

VistaDB es la única alternativa si va a ejecutar su sitio web en un alojamiento compartido (casi todos ellos no le permitirán ejecutar sus sitios web en modo Full Trust) y también si necesita un sitio web habilitado para la implementación de x-copy. / p>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top