Pergunta

Eu tenho um aplicativo Entidades Web de dados dinâmico que usa um banco de dados com GUIDs como chaves primárias para as tabelas. Todos os campos GUID tem o valor padrão definido para NEWID () para SQL Server irá gerar um novo GUID para qualquer registro. No entanto, em meu site dinâmico de dados, na inserção de novas páginas de entrada dos shows campo GUID-se e espera-se para o usuário para inserir dados. Como eu poderia impedir que o campo seja exibido?

Foi útil?

Solução

De acordo com a MSDN :

"Você pode esconder a chave primária como você faz qualquer outra coluna usando o atributo Andaime e definindo seu valor como falsa. Porque as chaves geradas automaticamente não são reconhecidos, o padrão Inserir modelos de página não funcionam com EDM para tabelas que possuem chaves primárias automáticas a menos que você crie uma classe parcial para a entidade e aplicar o atributo de andaime com um valor de falso ".

Além disso, como um aparte, é preferível usar "newsequentialid ()" para o valor padrão de Guid se você estiver usando SQL Server 2005 ou superior, como é mais eficiente para a inserção.

Outras dicas

não é a resposta certa ..

Depois de fazer isso, o que eu fiz, você pode inserir um registro que vai ter um GUID com todos os zeros. Depois que você vai ter nenhuma mensagem de erro em tudo, mas você não será capaz de inserir qualquer mais registros, devido à restrição índice exclusivo na guid (que é uma chave primária é claro).

Para realmente resolver este problema, você tem que editar o arquivo emdx e adicionar o

StoreGeneratedPattern="Identity"

em seu tag propriedade Guid sob o comentário "conteúdo SSDL". Exemplo:

   <Property Name="Guid" Type="uniqueidentifier" Nullable="false" StoreGeneratedPattern="Identity"/>

Se yhou fazer isso no designer dentro visual studio ele vai anotar a marca de propriedade sob o comentário "CSDL conteúdo" que não funciona ..

Usado Entity Framework 4.0 Visual Studio 10 e .NET framework 4.0

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