Pergunta

Eu tenho um aplicativo asp.net-mvc com o banco de dados de associação padrão. Estou acessando-o por ADO.NET Entity Framework.

Agora, quero movê-lo para o IIS, mas vários problemas apareceram. Eu tive que instalar SQL Server Management Studio, criar novas DB, aí a importação todos os dados do arquivo MDF anterior. A única coisa que resta a fazer (tanto um eu sei) é mudar a seqüência de conexão. No entanto, eu não estou realmente experiente com isso e continuo recebendo a palavra-chave não suportado: 'fonte de dados'. exceção. Aqui é a minha string de conexão:

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

Todas as idéias, o que está errado?

Foi útil?

Solução

O que você tem é uma seqüência de conexão ADO.NET válido - mas é não uma seqüência de conexão válida Entity Framework.

A seqüência de conexão EF seria algo parecido com isto:

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

Você está perdendo todos os elementos metadata= e providerName= na cadeia da ligação EF ...... você basicamente só tem o que está contido na parte provider connection string.

Usando o designer EDMX deve criar uma cadeia de conexão EF válido para você, no seu web.config ou app.config.

Marc

UPDATE: OK, eu entendo o que você está tentando fazer: você precisa de um segundo "ADO.NET" string de conexão apenas para banco de dados de usuário / associação ASP.NET. A seqüência é OK, mas o providerName está errado - que teria de ser "System.Data.SqlClient" - esta conexão não usa o Entity Framework - não especificar o "EntityClient" para ele, então

<add name="ASPNETMembership" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.SqlClient" />

Se você especificar providerName=System.Data.EntityClient ==> Entity Framework string de conexão (com os metadados = e tudo).

Se você precisar e especificar providerName=System.Data.SqlClient ==> ADO.NET reta seqüência de conexão SQL Server sem todas as adições EF

Outras dicas

Este problema pode ocorrer quando você faz referência a sua web.config (ou app.config) seqüências de conexão por índice ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

A seqüência de conexão com base zero, nem sempre é aquele em seu arquivo de configuração, pois herda outros por padrão a partir mais para cima da pilha.

As abordagens recomendadas são para acessar sua conexão pelo nome ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

ou para limpar o elemento connnectionStrings em seu arquivo de configuração primeiro ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...

Eu estava recebendo o mesmo problema.
mas esse código funciona bem experimentá-lo.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

Eu tive esse problema quando comecei a usar o Entity Framework, isso aconteceu quando eu não alterar a conexão do servidor SQL antigo para conexão EntityFramework.

Solução: no arquivo onde a conexão é feita através de arquivo web.config "nome add =" Entidades "connectionString = XYZ", certifique-se que você está se referindo a conexão correta, no meu caso eu tive que fazer isso

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

MyEntityFrameworkConnection sempre necessidade de conexão a ser estabelecida chamada.

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;

Nota: a conexão no arquivo web.config será gerada automaticamente quando a adição de modelo de entidade para a solução.

Eu sei que este é um post antigo, mas eu tenho o mesmo erro recentemente assim para o que vale a pena, aqui está uma outra solução:

Esta é geralmente um erro de seqüência de conexão, verifique o formato de sua cadeia de conexão, você pode olhar para cima 'estrutura de entidade connectionstring' ou seguir as sugestões acima.

No entanto, no meu caso a minha string de conexão era bom eo erro foi causado por algo completamente diferente, então eu espero que isso ajude alguém:

  1. Primeiro eu tive um erro EDMX : houve uma nova tabela de banco de dados no EDMX ea tabela não existia no meu banco de dados (engraçado é o erro o erro não era muito óbvio porque não foi mostrado na minha EDMX ou janela de saída, em vez disso, foi escondido no visual studio na janela 'Lista de erros' sob as 'advertências'). Eu resolvi esse erro adicionando a tabela faltando ao meu banco de dados. Mas, eu estava realmente ocupado tentando adicionar um procedimento armazenado e ainda obter o erro 'fonte de dados', para ver abaixo como eu resolvê-lo:

  2. Armazenado erro procedimento : Eu estava tentando adicionar um procedimento armazenado e toda vez que eu adicionei-o através da janela de design da EDMX eu tenho um erro 'fonte de dados'. A solução foi adicionar o procedimento armazenado como branco (I manteve o nome proc armazenados e declaração, mas eliminado o conteúdo do proc armazenados e substituiu-o com 'seleccionar 1' e repetida adicionando-o ao EDMX). Funcionou! Presumivelmente EF não como algo dentro da minha proc armazenado. Uma vez que eu tinha adicionado o proc a EF I foi então capaz de atualizar o conteúdo do proc no meu banco de dados para o que eu queria que fosse e ele funciona, o erro 'fonte de dados' resolvido.

estranheza

Eu estava recebendo o mesmo erro, então atualizei meu seqüência de conexão como abaixo,

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

Tente isto que vai resolver o seu problema.

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