Maison >développement back-end >C++ >Comment conserver les annotations de données dans les classes générées par Entity Framework ?

Comment conserver les annotations de données dans les classes générées par Entity Framework ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-01 12:18:11975parcourir

How to Persist Data Annotations in Entity Framework Generated Classes?

Préserver les annotations de données dans le code généré par Entity Framework

Question :

Comment ajouter des annotations de données à une classe générée par Entity Framework (EF) qui persiste après le code régénération ?

Contexte :

Considérons une classe générée par EF :

public partial class ItemRequest
{
    public int RequestId { get; set; }
}

Modifier ce code directement pour ajouter des annotations (par exemple, [Obligatoire ]) sera écrasé sur le code suivant génération.

Réponse :

EF génère des classes sous forme de classes partielles. En utilisant cela, nous pouvons créer une classe partielle distincte avec les annotations de données souhaitées :

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

// Ensure the namespace matches the original class
namespace MvcApplication1.Models
{
    // Metadata class for data annotations
    [MetadataType(typeof(ItemRequestMetaData))]
    public partial class ItemRequest
    {
    }

    public class ItemRequestMetaData
    {
        [Required]
        public int RequestId { get; set; }
    }
}

L'attribut MetadataType relie la classe ItemRequestMetaData à la classe ItemRequest d'origine. Cela permet d'appliquer les annotations de données dans ItemRequestMetaData à ItemRequest sans modifier le code généré.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn