Pergunta

Em uma aplicação web como wiki, fóruns ou software de blog, geralmente é útil armazenar seus dados em um banco de dados relacional.Como muitas empresas de hospedagem oferecem um único banco de dados com seus planos de hospedagem (com bancos de dados adicionais com custo extra), é muito útil para seus usuários quando os objetos do seu banco de dados (tabelas, visualizações, restrições e procedimentos armazenados) têm um prefixo comum.É típico que aplicativos cientes da escassez de banco de dados tenham um prefixo de tabela embutido em código.Eu quero mais, no entanto.Especificamente, eu gostaria de ter um prefixo de tabela que os usuários pudessem designar – digamos, no arquivo web.config (com um padrão apropriado, é claro).

Já que eu odeio programar CRUD operações manualmente, prefiro trabalhar com um OR/M competente e usei (e gostei) de LINQ to SQL, Subsonic e ADO.Net.No entanto, estou tendo problemas em um novo projeto quando se trata de colocar um prefixo de tabela no arquivo web.config de um usuário.Existe algum produto OR/M baseado em .Net que possa lidar com esse cenário com elegância?

O melhor que consegui fazer até agora foi usar LINQ to SQL com um arquivo de mapeamento externo que eu teria que atualizar de alguma forma com base em uma configuração web.config ainda hipotética.

Alguém tem uma solução melhor?Tentei fazer isso acontecer no Entity Framework, mas rapidamente se tornou uma bagunça.(Devido à minha falta de familiaridade com a EF?Possivelmente.) Que tal o SubSonic?Tem a opção de aplicar um prefixo de tabela além do momento da geração do código?

Foi útil?

Solução

Eu já pesquisou o que é preciso para fazer isso em ambos Entity Framework e LINQ to SQL e documentado os passos necessários em cada . É muito mais do que respostas aqui tendem a ser, então eu vou ficar contente com um link para a resposta, em vez de duplicá-lo aqui. É relativamente envolvidos para cada um, mas o LINQ to SQL é a solução mais flexível e também a mais fácil de implment.

Outras dicas

LightSpeed ?? permite que você especifique um INamingStrategy , que permite resolver os nomes de tabela dinamicamente em tempo de execução.

Ao invés de usar a tabela em vez prefixos têm uma aplicação utilizador que pertence a um schema (em MS SQL 2005 ou superior).

Isto significa que em vez de:

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

Você tem:

select * from clientA.Product
select * from clientB.Product
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top