EF Simultaneidade de processamento com o Carimbo de data / hora atributo no Modelo de Primeira abordagem
-
12-12-2019 - |
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
- Adicionar uma propriedade chamada "Carimbo de data / hora" para a entidade em EF do modelo
- Defina o tipo para binário
- Conjunto nulo para false
- Conjunto StoreGeneratedPattern para Computado
- 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.
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.