O designer do WPF não carrega quando o DataSource de ligação da estrutura da entidade
-
19-08-2019 - |
Pergunta
EDITAR: Eu enviei um relatório de bug e a Microsoft reconheceu que é um bug. Atualmente, não existe ETA quando será corrigido.
Relatório de erro: https://connect.microsoft.com/visualstudio/feedback/viewfeedback.aspx?feedbackid=386982
Feedback oficial: http://social.msdn.microsoft.com/forums/en-us/vswpfdesigner/thread/ca3cac55-c1de-4e65-9543-e95484ad78c5/
Eu tenho uma solução estruturada da seguinte maneira.
- Projeto da estrutura da entidade
- Projeto de acesso a dados
- Projeto de aplicativo WPF
O aplicativo WPF chama métodos no projeto de acesso a dados, que obtém seus dados do projeto da estrutura da entidade e o vincula no XAML.
por exemplo
<UserControl.Resources>
<ObjectDataProvider x:Key="tokens"
ObjectType="{x:Type ctl:MerchantNetworkController}"
MethodName="ListMerchantNetworkTokens" />
</UserControl.Resources>
O problema que tenho é que o designer do VS 2008 não carrega quando eu chamo funções do projeto de acesso a dados, no entanto, posso compilar e executar a solução bem.
Quando crio uma função no código atrás do XAML e uso isso em vez do projeto de acesso a dados, ele funciona bem e o designer realmente carrega. O problema ocorre quando faço uma chamada para o projeto de acesso a dados.
A mensagem de erro que recebo do designer é
"The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid"
Eu tenho a seguinte string de conexão no app.config do projeto WPF e o projeto de acesso a dados
<add name="Entities"
connectionString="metadata=C:\EFModel\Model.csdl|C:\EFModel\Model.ssdl|C:\EFModel\Model.msl;
provider=System.Data.SqlClient;
provider connection string='Data Source=localhost;Initial Catalog=database;Persist Security Info=True;User ID=username;Password=password;MultipleActiveResultSets=True'"
providerName="System.Data.EntityClient" />
Estou usando o VS 2008 SP1, .NET 3.5 SP1, Vista 32 bits
Solução
Sim, isso é uma merda. Já tive que lidar com isso antes. A melhor coisa que você pode fazer é fazer com que sua função de controlador retorne dados falsos quando estiver na exibição de design.