Eu adicionei um novo ADO.Net Entity Data Model em meu projeto e usei o Update Wizard para adicionar tabelas ao modelo. Cinco das tabelas selecionadas foram adicionadas à superfície de design. Duas outras tabelas não serão adicionadas. Eu os seleciono no assistente e clico em Concluir, mas eles nunca aparecem na superfície de design.
Isso é um bug ou existem algumas situações em que uma tabela não pode ser adicionada ao modelo (por design)?
ATUALIZAÇÃO: O XML (* .edmx) revela o problema.
<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not
have a primary key defined and no valid primary key could be inferred.
This table/view has been excluded. To use the entity you will need to
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
<Property Name="role_id" Type="decimal" />
<Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->
.net
visual-studio-2008
entity-framework
ado.net
primary-key
Robert Claypool
fonte
fonte
Respostas:
A superfície de design é diferente do modelo de entidade. É possível ter uma tabela no mapeamento em seu EDMX que não aparece na superfície de design. Visualize o arquivo como XML para ver se é esse o caso. Neste caso, o Update Wizard não permitirá que você adicione novamente as tabelas, uma vez que já fazem parte do modelo de entidade. Portanto, de modo geral, o Assistente de atualização sabe mais sobre o seu modelo de entidade do que sobre a superfície de design em si .
Não creio que essa seja exatamente a situação em que você está, mas deve dar uma ideia geral para a solução: vá para o XML e procure referências às tabelas em questão.
fonte
Defina as chaves primárias para todas as tabelas ou apenas uma caixa de seleção desmarcada "Permitir nulo" para qualquer coluna de cada tabela. Funciona para mim :)
fonte
1. Altere a estrutura da tabela e adicione uma coluna primária. Atualize o modelo.
2.Modifique o arquivo .EDMX no Editor de XML e tente adicionar uma nova coluna sob a tag para esta tabela específica. (NÃO FUNCIONA)
3. Em vez de criar uma nova coluna primária para a tabela Exiting, farei uma chave composta envolvendo todas as colunas existentes. (TRABALHADO)
Entity Framework: adicionando DataTable sem chave primária ao modelo de entidade.
fonte
Eu também tive esse problema, todas as opções acima não funcionaram para mim. O que me ajudou foi o seguinte.
Quando você tenta se conectar a um banco de dados, esse banco de dados pode ter usuários diferentes com credenciais diferentes que pode aceitar. Digamos que o usuário A até D.
Se você tentar se conectar a um usuário, certifique-se de que ele tenha as credenciais corretas habilitadas, neste caso, as opções de leitura e gravação habilitadas.
Para fazer isso, inicie o MS SQL Server Managment Studio, conectado ao seu servidor SQL e selecione o banco de dados com o qual você tenta fazer uma conexão no Visual Studio. Em 'your_dbname' -> Segurança -> Usuários, você encontra uma lista de usuários. Clique com o botão direito do mouse no nome de usuário com o qual deseja fazer login e selecione propriedades. Uma janela se abre. Selecione a página 'Geral' (selecionada por padrão) e na guia 'Associação de função de banco de dados' certifique-se de que 'db_datareader' e 'db_datawrite' estejam selecionados.
Nota: Ao fazer login também no MS SQL Server Managment Studio, certifique-se de fazer login com um usuário que pode ativar / desativar essas opções ...
fonte
Verifique se há 'Nulos' em sua tabela específica. Se todas as colunas forem definidas como 'Permitir Nulo', Entity Framework considera uma tabela 'Nula'. Eu tive o mesmo problema e desmarquei 'Permitir Nulo' e adicionou a tabela necessária.
fonte
Tabelas sem chaves primárias não serão adicionadas.
fonte
Minha solução para isso é excluir o modelo inteiro e lê-lo, incluindo as novas tabelas que desejo.
Apaguei acidentalmente uma tabela no designer uma vez e não consegui lê-la. Daí remover o modelo inteiro e lê-lo.
Tive alguns problemas com isso também ( modelo de dados de entidade Ado.Net não atualizando corretamente )
fonte
Isso foi resolvido na versão mais recente (ambiente: VS 2012, .net framework 4.5). Simplesmente abra o arquivo .edmx e adicione as tabelas / procedimentos armazenados / visualizações necessárias. A tabela / visão que não possui a chave primária será criada como tabela / visão somente leitura.
fonte
Você não precisa excluir o modelo inteiro (isso pode ser centenas de tabelas!).
O assistente pode lidar com a "adição de novos" itens, mas algumas alterações, como alterar chaves compostas e renomear colunas - ele não sabe o que fazer - portanto, não tenta - e as coisas ficam fora de sincronia.
ASSIM: APAGUE as tabelas em questão do Modelo (modo conceitual) E do Model.Store, e então atualize o modelo usando o Wizard, e adicione novamente apenas as tabelas em questão.
fonte
Apenas lançando mais alguns detalhes para quem não teve que fazer isso antes. Estou usando o visual studio 2013 com a atualização 4 instalada. Eu adicionei alguns campos a uma tabela, apaguei a tabela do meu modelo e fui atualizar e não me deixou verificar nenhuma das tabelas.
Eu tenho uma chave primária.
Criei uma nova tabela de teste, que apareceu e me permitiria verificar, mas não a original.
Nunca o abri em XML antes e não sabia como fazer isso. Você clica com o botão direito no arquivo .edmx e "abre com" - escolhe o editor xml.
a mesa em questão tava bem ali, tinha até os novos campos (estranho).
Excluí todas as referências a ele (demorou algumas vezes) - depois de excluir uma e salvar, se você tentar abri-la e ela não for exibida, vá em frente e escolha "visualizar XML" - observe os erros e basicamente siga a bola quicando até limpá-la.
espero que o detalhe extra ajude alguém.
Joe
fonte
Uma maneira fácil que descobri foi (no SQL Server Management Studio) adicionar uma coluna de ID do tipo INT, desmarcar "Permitir nulos" e, em Propriedades da coluna (de ID) >> Especificação de identidade >> verificar (É identidade), e fazer certo incremento está definido.
Depois que o acima for feito, volte para a janela .edmx, clique com o botão direito e Atualizar modelo do banco de dados.
fonte
Você pode adicionar uma tabela cruzada de coluna de chave primária. Então o problema está resolvendo
fonte