Voici la solution que j'ai utilisée dans de tels cas. Elle est utile lorsque vous avez des classes générées automatiquement que vous voulez décorer avec des attributs. Disons que ceci est la classe auto-générée :
public partial class UserProfile
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
}
Et disons que je voudrais ajouter un attribut pour spécifier que UserId est la clé. Je créerais alors une classe partielle dans un autre fichier comme ceci :
[Table("UserProfile")]
[MetadataType(typeof(UserProfileMetadata))]
public partial class UserProfile
{
internal sealed class UserProfileMetadata
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
}
}
0 votes
Que signifie "généré à partir de la base de données" ? Seulement les définitions de propriétés, ou aussi le code ?
1 votes
Réponse courte, non. Réponse longue : deux fois plus stackoverflow.com/questions/456624/ .
0 votes
@snemarch : définitions de propriétés uniquement, je prévois de faire tout autre code à la main.
1 votes
Pourriez-vous faire une séparation interface+implémentation au lieu d'une classe partielle ? Générer l'interface à partir de la base de données, implémenter (et ajouter des attributs) dans l'implémentation.
0 votes
Oui, c'est possible, mais en utilisant des métadonnées et en faisant en sorte que l'autre partie hérite de ces métadonnées.