Pergunta

Eu não posso obter o Entity Framework para trabalhar contra SQL Azure. É este apenas me ou é não pretende ser compatível? (Eu tentei a versão original do EF com VS2008, bem como o mais recente VS2010 versão Beta 2)

Para verificar isso criei o cenário mais simples possível. Adicionar uma única tabela a uma instância local do SQL Server 2008. A tabela tem duas colunas, uma chave primária de tipo de número inteiro e uma coluna de cadeia. Eu adicionar uma única linha à tabela com os valores de (1, foobar). Eu adicionei então exatamente a mesma configuração para meu banco de dados SQL Azure.

Criado um aplicativo de console e gerou um modelo de EF do banco de dados local. Execute o aplicativo e tudo é bom, a única linha podem ser devolvidos a partir de uma consulta trivial. Atualizar a seqüência de conexão para conectar-se ao SQL Azure e agora ele falhar. Ele se conecta ao banco de dados SQL Azure, sem problemas, mas a consulta falha no processamento do resultado.

Eu segui o problema inicial para baixo, usando as informações de exceção. O modelo conceitual tinha o atributo de esquema = "dbo" set para o conjunto de entidades da minha entidade definida único. Tirei esse atributo e agora ele falha com outro erro ...

"Invalid object name 'testModelStoreContainer.Test'."

Onde 'Test' é, naturalmente, o nome da entidade que definiram e por isso parece que está tentando criar a entidade a partir do resultado retornado. Mas, por alguma razão desconhecida, não pode trabalhar fora deste cenário trivial.

Então, ou eu estou fazendo um erro realmente fundamental ou SQL Azure não é compatível com a EF? E isso parece loucura para mim. Eu quero usar a EF na minha WebRole e, em seguida, Serviços de RIA para o cliente final Silverlight.

Foi útil?

Solução

Enquanto eu não fiz isso eu tenho certeza que os membros da equipe EF tem, como tem Kevin Hoffman .

Por isso, é provavelmente apenas que você se extraviaram com um passo em seu processo de portabilidade.

Parece que você tentou atualizar o EDMX (XML) à mão, de um que trabalha contra um banco de dados local.

Se você fizer isso a maioria das mudanças será exigido no elemento StorageModel na EDMX (aka SSDL). Mas parece que você foi fazer alterações no ConceptualModel (aka CSDL) elemento.

Meu palpite é que você simplesmente precisa substituir todas as referências ao esquema dbo no SSDL com qualquer esquema é o esquema SQL Azure.

Espero que isso ajude

Alex

Outras dicas

Para responder à pergunta principal - Sim, pelo menos a v4 Entity Framework pode ser usado com SQL Azure - Eu não honestamente tentou com a versão inicial (do .Net Framework 3.5 SP 1.).

Um pouco tempo atrás eu fiz um projeto completo e um blog sobre a experiência: http: // www .sanderstechnology.com /? p = 9961 Esperemos que isso pode ajudar um pouco!

documentação do Microsoft Windows Azure contém Como: Conectar-se ao Windows Azure banco de dados SQL usando o ADO.NET Entity Framework.

Depois de criar o seu modelo, estas instruções descrevem como usar SQL Azure com o Entity Framework:

  1. Migrar o banco de dados Escola de banco de dados SQL, seguindo as instruções em Como:. Migração de banco de dados usando o Scripts Gere Wizard (Windows Azure banco de dados SQL)

  2. No SchoolEFApplication projeto, abra o App.Config arquivo. Altere a seqüência de conexão para que ele se conecta ao seu banco de dados SQL.

    <connectionStrings>
        <add name="SchoolEntities"
             connectionString="metadata=res://*/SchoolDataModel.csdl|res://*/SchoolDataModel.ssdl|res://*/SchoolDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<provideServerName>.database.windows.net;Initial Catalog=School;Integrated Security=False;User ID=<provideUserID>;Password=<providePassword>;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False&quot;"
             providerName="System.Data.EntityClient"/>
    </connectionStrings>
    
  3. Pressione F5 para executar o aplicativo contra o seu banco de dados SQL.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top