ADO.NET Entity Data Model Permite circulares Refs chave Foreign

votos
1

Eu estou usando o novo ADO.NET Entity Data Model em um banco de dados simples. Eu tenho uma tabela / entidade com uma chave primária (PageID) e uma chave estrangeira ParentID que as referências de volta para si mesmo em PageID para um pai / filho 0..1 para muitos relacionamento. Em uma página ASP.Net, eu estou usando um FormView com um asp: DynamicControl para expressar isso como um controle. Essa parte funciona bem, exceto por um detalhe crucial: Quando a página é processada, a lista de possíveis pais inclui em si, e definindo um item de ter um pai de si não causa erros e economiza ao banco de dados. Obviamente um objeto hierárquico não é suposto ter um pai de si mesmo, assim como faço para restringir este comportamento?

Tanto quanto eu posso ver, minhas opções são:

  • De alguma forma mudar o ForeignKey _edit.ascx nas FieldTemplates DynamicData. Isso é problemático porque eu não posso ver como obter uma referência para a entidade atual principal chave para a remover as possíveis estrangeiros escolhas principais. Além disso, esta será potencialmente mangueira qualquer refs Fkey usos não-hierárquicas, onde as chaves acontecem a colidir.

  • Faça alguma PreRender trapaça na página para tentar remover o ListItem do DropDownList prestados. Este não parece ser o caminho certo, pois só corrige-lo para a página em questão. EDIT: Isto é como eu estou resolvendo isso atualmente.

  • Algum tipo de gatilho insert / update para forçar o ParentID como nulo se ele corresponde a si mesmo. Isso não é bom porque ele falha silenciosamente a partir da perspectiva do usuário.

Tem alguém lá fora tem uma maneira melhor? Além disso, deixe-me saber se eu preciso para fornecer mais detalhes.

-Kelly

Publicado 09/12/2008 em 20:32
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Acabei mudando a hierarquia para uma mesa de montagem, porque eu tinha para armazenar mais do que apenas relações pai / filho. Isso também significava que eu poderia despejar o controle DynamicData e usar um TreeView mais intuitiva do usuário com os eventos do lado do servidor drag-n-drop (ComponentArt). Por causa da natureza do controle, nenhum item pode ser o seu próprio pai para que o problema era discutível. Uau, 7 meses é muito tempo na minha primeira experiência com Entity Framework :)

Respondeu 17/07/2009 em 22:06
fonte usuário

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