EF Simultaneidade de processamento com o Carimbo de data / hora atributo no Modelo de Primeira abordagem

StackOverflow https://stackoverflow.com//questions/10682591

Pergunta

Estou tentando implementar a solução dada em Tratamento de Simultaneidade com o Entity Framework em uma ASP.NET Aplicativo MVC .

O artigo diz:

Adicionando uma Propriedade de Acompanhamento para o Departamento de Entidade

Em Modelos\Departamento.cs, adicione uma propriedade de acompanhamento:

[Timestamp] 
public Byte[] Timestamp { get; set; }

O Carimbo de data / hora atributo especifica que esta coluna vai ser incluídos na cláusula Where de Atualizar e Excluir os comandos enviados para o banco de dados.

Desde que eu estou usando um modelo de primeira abordagem, eu segui os passos 1 - 5 descritos no A criação de uma coluna de Carimbo de hora com Entity Framework

  1. Adicionar uma propriedade chamada "Carimbo de data / hora" para a entidade em EF do modelo
  2. Defina o tipo para binário
  3. Conjunto nulo para false
  4. Conjunto StoreGeneratedPattern para Computado
  5. Conjunto ConcurrencyMode Fixo

Quando eu atualizar o meu código a partir do modelo de banco de dados, os Modelos\Departamento.cs agora contém

    public virtual byte[] Timestamp
    {
        get;
        set;
    }

Então eu usei o de metadados de classe para especificar o atributo Timestamp:

// Metadata for Department entity
public class DepartmentMetadata
{
    [Timestamp]
    public byte Timestamp { get; set; }
}

Q1. Eu testei se o valor da Timestamp coluna está mudando no caso da linha edições.Não.

EDIÇÃO 1 O problema foi causado porque o SQL Server tipo de coluna foi binary, onde ele deve ter sido do tipo timestamp.Alterar o tipo de dados foi corrigido o problema de coluna Timestamp não ficar atualizado.

Q2. Eu estava tentando modificar a mesma entidade (usando "Abrir em nova guia") para ver se um OptimisticConcurrencyException é lançada.Não.O que estou fazendo de errado?Por favor, ajude-me a entender, obrigado.

Screenshot of my <code>Timestamp</code> property

Foi útil?

Solução

O problema foi causado porque eu tinha um ObjectContext por sessão HTTP, e assim abrir uma nova aba e o teste seria NÃO causar uma exceção de concorrência.

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