Pergunta

Estou começando um novo aplicativo web. Vai ser hospedado em um serviço que os encargos extra para SQL Server e, francamente, eu não acho que as necessidades do local que muito de um banco de dados. Neste momento, o modelo de dados é de 5 mesas. E eu vou ser surpreendido se a maior tabela nunca vai de 10k registros.

Então, eu gostaria de manter o peso leve db. SQLite despertou meu interesse originalmente porque eu preciso aprender para Android. Mas o a falta de chaves estrangeiras me faz encolher. Claro que é possível implementar algo que se parece com restrições de chave estrangeira, mas ele só se sente un-relacional. Firebird parece ser a única db leve (e gratuito) que suporta FKs.

Além disso, eu realmente gostaria de colocar meus pés molhados em LINQ com este projeto. Até agora eu só encontrei DbLinq que me permite usar SQLite ou Firebird com LINQ. É atualmente em v0.18 por isso é longe de horário nobre. Eu executar os testes para SQLite com DbLinq e eles passam para o que eu preciso.

Houve uma outra implementação de LINQ para SQLite, mas todos os links que eu encontrei para ele acabar em 404s.

Então, quais são as minhas opções para bancos de dados de peso leve que são compatíveis com o LINQ? Qualquer uma das edições compactas de SQL Server estão fora, a menos que há um que é XCOPY destacável sem instalar de um agente / serviço ? Eu não posso estar se perguntando o anfitrião para instalar novo software desde que eu duvido que eles vão fazer isso e eu quero o aplicativo para ser altamente portátil (com relação a hospedagem).

A lista até agora:

  • SQLite
  • Firebird
  • SQL Server Compact
  • VistaDB

Update: Eu tentei todas as versões e escrevi minhas impressões aqui . A versão curta: SQLite ganha mãos para baixo. É o único que tem uma boa GUI, não instalar pegada e é gratuito.

Foi útil?

Solução 4

SQLite. Tem uma boa GUI (com auto-Freakin-completo não menos), não tem instalar pegada, é gratuito e funcionará independentemente de onde eu hospedar o site. Eu sei que eu estou respondendo a minha própria pergunta, mas ninguém colocar outra pessoa apenas SQLite na sua resposta.

Importante : SQLite vai exigir um host que usa o modo de confiança total se você quiser executá-lo em hospedagem compartilhada.

Outras dicas

Você pode usar LINQ to SQL como é em um banco de dados existente, desde que você pode fazer um objeto IDbConnection padrão.

Aqui está algum código para uso LINQ em um 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) suporta LINQ e todas as outras ferramentas VS, é construído em VS 2008, suporta FKs, e é XCOPY destacável com uma de arquivo simples para um banco de dados. Esteja avisado, porém, que não é sem suas advertências, bem como, um monte de coisas como visões ou consultas aninhadas cair, e pode ser muito inchado, se você começar a receber o tamanho do banco de dados muito grande (ou seja, 50MB +).

SQLite também é muito melhor se você usar o provedor SQLite .NET aqui ( http: //sqlite.phxsoftware.com/ ), trabalha com LINQ, bem como, e tem suporte básico VS.

Eu sugiro que você dê uma olhada no VistaDB . Vai fazer exatamente o que você está procurando para com o benefício adicional sobre SQLCE e SQLite que suporta vistas, procedimentos armazenados e gatilhos. Por uma questão de fato ele suporta a escrita de procedimentos e gatilhos em TSQL, bem como .NET para que você possa aproveitar o seu SQL Server e seu conhecimento NET.

SQL Server Express

VistaDB é a única alternativa se você vai executar o seu website em hospedagem compartilhada (quase todos eles não vai deixar você execute seus sites sob o modo Full Trust) e também se você precisar de simples implantação x-cópia habilitado site.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top