Estoy usando el marco de entidad 4.1.¿Cuál es la mejor manera de manejar la simultaneidad con el marco de entidad. ¿Hay una funcionalidad incorporada para manejarlo en el marco de la entidad? ¿Puedo prescindir de agregar una columna adicional a las tablas para mantener la versión de fila?La mejor manera de manejar la simultaneidad con el marco de entidades
13
A
Respuesta
6
Ha visto esto tutorial: http://www.asp.net/entity-framework/tutorials/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application
Usted puede hacerlo sin una columna rowversion pero que a menudo requiere el almacenamiento de una gran cantidad de estado, lo que puede afectar negativamente al rendimiento .
26
Puede configurar una columna en sus tablas denominada RowVersion y decirle a Entity Framework que desea que esta columna se incluya en las cláusulas where de todas las instrucciones UPDATE y DELETE. Luego, asegúrese de incrementar este campo para todas las entidades modificadas. Lo he hecho así:
//make all entities that need concurrency implement this and have RowVersion field in database
public interface IConcurrencyEnabled
{
int RowVersion { get; set; }
}
public class MyDbContext : DbContext
{
public override int SaveChanges()
{
foreach(var dbEntityEntry in ChangeTracker.Entries().Where(x => x.State == EntityState.Added || x.State == EntityState.Modified))
{
IConcurrencyEnabled entity = dbEntityEntry.Entity as IConcurrencyEnabled;
if (entity != null)
{
entity.RowVersion = entity.RowVersion + 1;
}
}
return base.SaveChanges();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//do all your custom model definition but have the following also:
modelBuilder.Entity<myEntity>().Property(x => x.RowVersion).IsConcurrencyToken();
}
}
Cuestiones relacionadas
- 1. La mejor manera de manejar una KeyNotFoundException
- 2. ¿Una mejor manera de manejar la bifurcación y la fusión?
- 3. ¿La mejor manera de organizar entidades en un juego?
- 4. Cuál es la mejor manera de actualizar entidades en nhibernate
- 5. La mejor manera de manejar los mensajes de error
- 6. ¿Cuál es la mejor manera de manejar objects.get de Django?
- 7. ¿La mejor manera de manejar múltiples UITableViews en un UIViewController?
- 8. ¿Cuál es la mejor manera de manejar excepciones en Perl?
- 9. ¿Cuál es la mejor manera de manejar múltiples acciones?
- 10. ¿Cuál es la mejor manera de manejar FBO en OpenGL?
- 11. La mejor manera de manejar cadenas enormes en C#
- 12. mejor manera de manejar múltiples NSTableView (s)
- 13. ¿Cuál es la mejor forma de comparar dos entidades marco de entidad?
- 14. Entidades asociación mapeo marco entre la vista y la tabla
- 15. La mejor manera de manejar la autenticación de cuenta de usuario y las contraseñas
- 16. ¿La mejor manera de manejar el desbordamiento de enteros en C#?
- 17. ¿La mejor manera de manejar el perfil de aprovisionamiento para distribución interna para usuarios inexpertos?
- 18. La mejor manera de codificar tuplas con json
- 19. ¿La mejor manera de analizar el flotador?
- 20. ¿La mejor manera de manejar la asignación de memoria en C?
- 21. ¿La mejor manera de manejar múltiples instancias de archivos de configuración?
- 22. ¿Cuál es la mejor manera de manejar zonas horarias con Javascript
- 23. T-SQL: la mejor manera de manejar valores NULL en la concatenación de cadenas
- 24. La mejor manera de manejar la seguridad y evitar XSS con las URL ingresadas por el usuario
- 25. La mejor manera de hacer hooks PHP
- 26. ¿La mejor manera de vaciar el stringstream?
- 27. ¿Cuál es la mejor manera de manejar actualizaciones cuando el calendario sincroniza nuevos eventos?
- 28. La mejor manera de manejar la autenticación en .NET WCF Web API
- 29. La mejor manera de manejar el estado sucio en un modelo ORM
- 30. ¿La mejor manera de manejar instantáneas antiguas en el repositorio local?
He leído esta pregunta. tiene una idea diferente gracias http://stackoverflow.com/questions/3412690/entity-framework-objectcontext-concurrency –
¿No puedo hacerlo sin una columna de versión de fila? –
Supongo que podría establecer más de una propiedad con 'IsConcurrencyToken()' y EF agregará estas columnas en la cláusula where de sus instrucciones de actualización y eliminación. No he probado esto sin embargo. –