Pregunta

Tengo un modelo de datos donde hay una entidad persona, que tiene un atributo transformable que es una variedad de diccionarios que contienen información. El modelo es mucho más grande que eso, esta es solo la parte con la que tengo problemas. Fue diseñado de esta manera por un antiguo desarrollador, y al hacerse cargo del proyecto necesito migrar esto para ser datos 100% centrales.

Entonces, lo que necesito hacer es crear una nueva entidad, luego atravesar cada diccionario en la matriz de la persona y crear nuevas instancias de esa entidad con la información de ese diccionario. Pensé que podría usar una NsEntityMigrationPolicy para configurar una migración personalizada para esta nueva entidad, pero parece que la migración de datos básicas espera que X número de entidades de origen se traduzca en X número de entidades de destino. Debido a que técnicamente tengo 0 entidades de origen en este momento (porque están en una matriz de la que los datos principales realmente no saben nada), no estoy seguro de cómo puedo hacer que la migración cree nuevas entidades durante el proceso.

¿Cuál, o más bien, en qué parte del procedimiento de migración, es la mejor manera de hacer lo que estoy tratando de lograr? Siempre he usado una migración ligera en el pasado, por lo que esta es mi primera aventura en migración personalizada.

¿Fue útil?

Solución

Ayudaría tener un sentido de su modelo de datos (esquema), pero supongamos que su entidad persona ahora tiene la dirección de la casa y la lista de restaurantes favoritos. Y supongamos además que creará una nueva dirección de entidades y restaurantes junto con las siguientes relaciones:

La persona tiene una dirección, por lo que hay una relación para abordar una persona a la que se le llama "HomeAddress". Hay una relación inversa a muchos de un discurso a persona, porque muchas personas podrían vivir en la misma dirección.

La persona tiene una relación de to muchos (llamadas restaurantes) a restaurantes. El restaurante también podría tener una relación con la persona (aunque este podría ser uno de esos casos en los que la bidireccionalidad realmente no tiene sentido).

De todos modos, el punto es que ahora, además de su subclase NsentityMigrationPolicy NsentityMigration, también tendrá personal Toaddress y PersonTorestaurant. Estos serán los lugares que desempaquetan los datos antiguos y los use para instanciar e inicializar nuevas direcciones y objetos de restaurantes.

Por supuesto, hay muchos otros problemas complicados. Por ejemplo, no querrá crear una nueva instancia del mismo restaurante para cada persona a la que le guste. Deberá realizar un seguimiento de los restaurantes recién creados.

Querrá pedir sus mapeos estratégicamente, probablemente primero con Persontoperson.

Es posible que desee mirar los datos principales de Marcus Zarra Código de muestra Y tal vez incluso comprar su libro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top