Como mapear uma tabela relacionada a uma entidade herdado (table-per-hierarquia)?

votos
0

Eu tenho essa tabelas no meu banco de dados.

texto alt http://img166.imageshack.us/img166/3133/testdbschemafy5.png

Com Entity Framework eu gostaria de ter algo parecido com isso:

texto alt http://img166.imageshack.us/img166/5721/testdbschemaefdv5.png

Eu usei herança table-per-hierarquia, então eu adicionei uma nova entidade para o usuário premium e mapeá-lo para a entidade usuário com condições para IsPremiumUser propriedade. Eu gostaria de ter a mesa PremiumAccount associado à entidade PremiumUser, mas não vai funcionar como eu fiz isso: - / Eu tenho esta mensagem de erro:

Erro 3021: Problema em Mapeamento Fragmento começando na linha 113: Cada uma das seguintes colunas em PremiumAccount tabela é mapeada para várias propriedades laterais conceptuais: PremiumAccount.UserID é mapeado para

Existe alguma solução para o meu problema? Posso associar a entidade PremiumAccount a uma entidade herdou? Há outra maneira de fazer isso?

Publicado 15/12/2008 em 10:13
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Eu acho que o campo PK do subtipo deve ser removido (como ele herda-lo de seu supertipo).

Dito isto, este não é um bom candidato herança. herança entidade só deve ser realizado se o tipo não pode mudar para uma entidade. Este é mais um candidato 'papel', então uma verdadeira relação 1: 1. A coisa é que o usuário pode perder / ganhar o papel premium em uma base regular, mas você não pode alterar o tipo de uma instância entidade existente (== linhas da tabela), mesmo se parece que você pode, simplesmente alterando os dados no base de dados. mapeamento de herança é sobre regras rígidas, você não pode dobrá-los, como herança em entidades é sobre interpretação de dados em um banco de dados, como modelos relacionais não sei o conceito de herança (embora alguns bancos de dados 'fraude', permitindo herança em DDL SQL como o PostgreSQL)

Respondeu 15/12/2008 em 10:27
fonte usuário

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