Pergunta

Como posso obter dois sites do ASP.NET separados, neste caso um site usando o Entity Framework e o Serviço da Web, para usar o mesmo banco de dados local MDF & LDF?

Olhei em volta e acho que esse tipo de banco de dados local é chamado de instância do usuário - pelo menos a maneira como estou usando -o atualmente. Eu não tinha certeza se funcionaria ou não até encontrar as informações abaixo do Biblioteca MSDN E agora não tenho certeza se funcionará.

Os cenários da instância do usuário incluem:

...

Hosting ASP.NET dedicado usando a autenticação do Windows. Uma única instância do SQL Server Express pode ser hospedada em uma intranet. O aplicativo se conecta usando a conta do ASPNET Windows, não usando a representação. As instâncias do usuário não devem ser usadas para cenários de hospedagem de terceiros ou compartilhados em que todos os aplicativos compartilhassem a mesma instância do usuário e não permaneceriam mais isolados um do outro.

Isso funcionará imediatamente sem nenhuma configuração extra? Quando tento adicionar um banco de dados a todos os aplicativos sucessivos, recebo um arquivo em uso de uso se alguma coisa estiver usando o banco de dados que me leva a acreditar que não posso fazer dessa maneira. No entanto, se eu parar o banco de dados de ser usado, adicione -o e depois inicie -o, ele parece para funcionar bem. Alguém tem alguma garantia para mim de que não será corrompida ou experimentará nenhum erro usando -o dessa maneira?

De preferência, o MDF & LDF seria armazenado no diretório app_data do site do site (| DataDirectory |). Se eu fizer dessa maneira, acho que não posso usar o endereçamento relativo de segurança para o serviço, a menos que eu o coloque em um subdirectory para o site, isso está correto?

editar: Estou usando o SQL Server Express porque essa é uma tarefa para a escola, então eu tenho que usá -la. Se houver uma maneira sem a instância do usuário, tentarei fazer sem ele.

Foi útil?

Solução

Você não pode usar User Instance por esta. Isso permite que apenas um cliente de cada vez se conecte ao seu banco de dados. Quando seus dois aplicativos usam as mesmas credenciais, você recebe o erro que descreve. Quando seus dois aplicativos usam credenciais diferentes, você obtém duas instâncias separadas (também não o que deseja).

Além disso, as instâncias do usuário são suportadas apenas no SQL Server Express. Não sei como é o seu ambiente de produção, mas provavelmente não é executado no SQL Server Express?

Você deveria usar AttachDBFilename Na string de conexão do seu aplicativo da Web, para apontar para o banco de dados local: AttachDBFilename=|DataDirectory|\MyDB.mdf.

No seu serviço da web, você também usa AttachDBFilename Mas depende do local de implantação do serviço da web para onde apontá -lo.

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