entity-framework-4 hilo

entity framework 4 - Hola para el marco de la entidad



entity-framework-4 hilo (5)

Desafortunadamente, EF no tiene nada muy cercano a los generadores de POID como NHibernate, aunque escucho rumores de que se incluirán capacidades similares en la próxima versión de EF. (¿¡Qué?!? ¿Microsoft coopta la buena idea de un competidor? ¡Inconcebible!)

No sería demasiado difícil manejar la parte Lo de HiLo nosotros mismos, pero la parte Hi sería complicada a menos que pudiéramos conseguir que EF cooperara. Eso llevaría a Microsoft a refactorizar partes de EF, por lo que probablemente nadie haya intentado hacerlo y publicarlo como un proyecto de código abierto en github o codeplex.

Mientras tanto, lo que hemos usado para generar registros fuera de línea y luego sincronizarlos posteriormente es el identificador único global.

var id = Guid.NewGuid();

Luego asignándolo a la id de la tabla. Esto se puede hacer en SaveChanges.

Sé que no es tan bueno como HiLo pero está tan cerca como hemos llegado. Todavía tiene las ventajas de poder trabajar sin conexión y garantizar ids válidos y únicos.

¿Alguien ha implementado un generador de claves HiLO para Entity Framework?

Lea más sobre HiLo aquí: le recomiendo que lea http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html para obtener una explicación detallada de las desventajas de elegir la identidad.


El marco de la Entidad de la OMI no tiene ningún equivalente a los generadores de NHibernate. La única función disponible en EF es StoreGeneratedPattern, que se puede establecer en Identidad. StoreGeneratedPattern simplemente significa que DB asignará una clave y la clave se devolverá como parte de la operación de inserción al contexto EF (más difícil con Guids).

Si desea tener algún equivalente al generador de POID de NHibernate, debe anular SaveChanges o manejar SavingChanges en su ObjectContext. Luego, puede asignar manualmente la ID a todas las entidades insertadas del algoritmo POID de su elección, pero debe implementar el algoritmo.



Gracias por las respuestas

Creo que solo tengo que esperar :-) El EF se está moviendo en la dirección correcta amando el CTP5.

Necesito comentar la respuesta de "Rap". El uso aleatorio de Guid como índice puede ralentizar el rendimiento del servidor SQL porque los índices de cada inserción se fragmentan. Aprendí esto del mundo real, cuando comencé a trabajar en una nueva empresa que tenía grandes problemas con el rendimiento en los servidores SQL. Pasar de guid a bigint solucionó el problema. y no había necesidad de reindexar todo el tiempo.