El modelo de datos de entidad ADO.NET permite referencias de claves externas circulares

votos
1

Estoy usando el nuevo Modelo de Datos de Entidades ADO.NET en una base de datos simple. Tengo una tabla / entidad con una clave primaria (PageID) y una clave externa ParentID que hace referencia a sí mismo en PageID para una relación padre / hijo 0..1 a muchos. En una página ASP.Net, uso FormView con un asp: DynamicControl para expresar esto como control. Esa parte funciona bien, excepto por un detalle crucial: cuando la página rinde, la lista de posibles padres se incluye a sí misma, y ​​establecer un elemento para tener uno de los padres no causa errores y se guarda en la base de datos. Obviamente, se supone que un objeto jerárquico no debe tener un padre, ¿cómo puedo restringir este comportamiento?

Por lo que puedo ver, mis opciones son:

  • De alguna manera cambie ForeignKey _edit.ascx en DynamicData FieldTemplates. Esto es problemático porque no veo cómo obtener una referencia a la clave primaria de la entidad actual para eliminarla de las posibles opciones de clave externa . Además, esto potencialmente manguera cualquier uso de fkey ref no jerárquico donde las teclas chocan.

  • Haga algo de PreRender jiggery-pokery en la página para tratar de eliminar el ListItem de la DropDownList representada. Esto no parece ser el correcto porque solo lo arregla para la página en cuestión. EDITAR: Así es como lo estoy resolviendo actualmente.

  • Algún tipo de disparador de inserción / actualización para forzar que ParentID se anule si se empareja a sí mismo. Esto no es bueno porque falla silenciosamente desde la perspectiva del usuario.

Alguien por ahí tiene una mejor manera? Además, avíseme si necesito proporcionar más detalles.

-Kelly

Publicado el 09/12/2008 a las 20:32
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Terminé moviendo la jerarquía a una tabla de ensamblaje porque tenía que almacenar más que solo relaciones padre / hijo. Hacerlo también significaba que podía volcar el control DynamicData y usar TreeView más intuitivo para el usuario con eventos del lado del servidor de arrastrar y soltar (ComponentArt). Debido a la naturaleza del control, ningún elemento podría ser su propio padre, por lo que el problema era discutible. Wow, 7 meses es mucho tiempo en mi primera experiencia con Entity Framework :)

Respondida el 17/07/2009 a las 22:06
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more