Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 36284|Resposta: 0

[Fonte] Atributos de Sombra do Quadro de Entidade da Série EF (3) [Reimpressão]

[Copiar link]
Postado em 2021-2-7 14:15:08 | | | |
A EF Core Series 2 encapsula o OnModelCreating, cria índices usando reflexos e muito mais
https://www.itsvse.com/thread-9392-1-1.html

Propriedades sombra são propriedades que não estão definidas na classe de entidade .NET, mas são definidas para aquele tipo de entidade no modelo EF Core. Os valores e estados desses atributos são mantidos puramente no rastreador de mudanças. Propriedades sombreadas são úteis quando dados em um banco de dados não devem ser expostos no tipo de entidade mapeada.
O núcleo do Entity Framework introduz um novo tipo de atributo chamado atributo "sombra", que não existe no EF 6.x.

O atributo sombra não está lá. .NET classes de entidade. Em vez disso, você pode configurá-lo para um tipo específico de entidade no modelo de dados da entidade. Ele pode ser configurado no método OnModelCreating() da classe context.

O diagrama a seguir ilustra o atributo sombra.



Como mostrado na imagem acima, o atributo sombra não pertence à sua classe de entidade. Portanto, você não pode acessá-lo ao acessar outras propriedades de uma entidade. Propriedades sombreadas só podem ser configuradas para tipos de entidade ao construir o modelo de dados da entidade, e também serão mapeadas para colunas de banco de dados. O valor e o estado da propriedade sombra são mantidos apenas no rastreador de mudanças.

Vamos entender os aspectos práticos das propriedades de sombra. Digamos que precisamos manter as datas de criação e atualização de cada registro na tabela do banco de dados. Você aprendeu a definir as datas de criação e modificação das entidades no EF Core definindo as propriedades CreatedDate e UpdatedDate na classe entidade. Aqui veremos como alcançar o mesmo resultado usando propriedades sombra em vez de incluir propriedades sombra na classe entidade.

Considere as seguintes aulas de entidade estudantil.

A turma estudantil acimaOs atributos CreatedDate e UpdatedDate não estão incluídospara manter o tempo em que foi criado ou atualizado. Nós as configuramos como propriedades sombra na entidade Estudante.

Defina propriedades de sombra

Você pode usar o método OnModelCreating() para definir propriedades de sombra para tipos de entidade usando a API Fluent.

A configuração a seguir configura duas propriedades sombreadas, CreatedDate e UpdatedDate, para a entidade Estudante.


Como você pode ver, o método Property() é usado para configurar as propriedades da sombra. Especifique o nome da propriedade sombra como uma string e o tipo como um parâmetro genérico. Se o nome especificado no método Property() coincidir com o nome de uma propriedade existente, o EF Core configurará essa propriedade existente como uma propriedade sombra em vez de introduzir uma nova propriedade sombra.

Propriedades sombra no banco de dados

Uma vez definidas as propriedades da sombra, precisamos atualizar o esquema do banco de dados, pois as propriedades da sombra serão mapeadas para as colunas correspondentes do banco de dados.

Para isso, adicione uma migração de banco de dados no console Package Manager do Visual Studio usando o seguinte comando.


A tabela Student agora incluirá duas colunas, CreatedDate e UpdatedDate no SQL Server, conforme mostrado abaixo.



Então, mesmo que não incluamos essas propriedades na classe Student e as configuremos como propriedades sombra, o banco de dados terá as colunas correspondentes.

Acesse a propriedade sombra

Você pode usar o método Property() para obter ou definir o valor da propriedade sombra no EntityEntry. O código a seguir acessa o valor da propriedade sombra.

No entanto, no nosso cenário, queremos definir automaticamente os valores para essas propriedades de sombra no método SaveChanges(), para que não precisemos defini-los manualmente em cada objeto entidade. Então, substitua o método SaveChanges() na classe de contexto como mostrado abaixo.

Isso definirá automaticamente os valores para as propriedades sombra CreatedDate e UpdatedDate.

Agora, execute o código a seguir e verifique os registros no banco de dados.


O código acima inserirá os seguintes registros em CreatedDate e UpdatedDate for Students.



Então, ao configurar as propriedades sombra, não precisamos incluí-las na classe entidade.

Configure as propriedades das sombras em todas as entidades

Em vez de configurar manualmente as propriedades das sombras em todas as entidades ao mesmo tempo, você pode configurá-las manualmente.

Por exemplo, podemos configurar todas as entidades do CreatedDate e do UpdatedDate da última vez, como mostrado na imagem a seguir.


Quando usar a propriedade sombra?

O atributo sombra pode ser usado em duas situações:

Quando você não quer expor colunas de banco de dados em entidades mapeadas, como no cenário discutido acima.
Quando você não quer expor atributos de chave estrangeira, mas só quer usar atributos de navegação para gerenciar relacionamentos. A propriedade da chave estrangeira será uma propriedade sombra e será mapeada para a coluna do banco de dados, mas não será exposta como propriedade da entidade. (No EF Core, se você não definir uma propriedade de chave estrangeira em uma classe de entidade, ela gerará automaticamente uma propriedade sombra para isso.) Você não precisa configurar manualmente as propriedades das chaves estrangeiras. )


Recursos:

O login do hiperlink está visível.
O login do hiperlink está visível.




Anterior:O MySQL exporta os resultados da consulta para um arquivo
Próximo:ASP.NET Tutorial Núcleo do ViewComponent sobre o uso do ViewComponent
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com