Pergunta

Descrição: Tentei separar determinados segmentos de domínio em diferentes DbContextS.

Cada um tem vários DbSetsim, mas existem alguns DbSets que são compartilhados, por exemplo, o UserProfile.

O motivo dessa separação é a velocidade com que o modelo é gerado e a simplicidade (menos conjuntos em um objeto, ajuda no intellisense).

No entanto, não tenho certeza sobre o que exatamente pertence ao modelo gerado.

P1: Todas as entidades que estão transitoriamente conectadas às entidades, para as quais existe um DbSet em um DbContext, estão incluídas no modelo?

Q2: Se assim for, isso significaria que, em termos de desempenho, não serve para nada separar o domínio em contextos diferentes, uma vez que tudo o que está conectado acaba no modelo de qualquer maneira, não importa qual DbSets são indicados no DbContext?

Onde posso encontrar mais informações sobre como o modelo é gerado?Li um livro sobre EntityFramework e CodeFirst e não consegui encontrar essa informação específica...

Foi útil?

Solução

Respondendo ao seu primeira pergunta:sim, todas as relações são modeladas incluindo as entidades de ambos os lados, portanto, cada entidade conectada por uma propriedade de navegação a uma entidade incluída também será incluída no modelo, independentemente de haver um DbSet por isso ou não.

Entity Framework não força você a criar DbSets para todas as entidades.Isso pode ser útil se você quiser "restringir" entidades filhas para que sejam acessíveis apenas por meio de seus pais.

Em relação ao seu segunda questão:separar seus contextos ainda poderá melhorar o desempenho, se nem todas as entidades pertencentes a um contexto forem acessíveis por meio de propriedades de navegação de entidades pertencentes ao outro contexto.Lá poderia ser um custo adicional associado à inclusão explícita de mais DbSets em um contexto também.

Você pode ler (algumas partes) do código-fonte do Entity Framework, é de código aberto e está disponível no CodePlex para saber mais sobre como o modelo é construído.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top