Oto rozwiązanie, którego używałem w takich przypadkach. Jest to przydatne, gdy masz automatycznie generowane klasy, które chcesz ozdobić atrybutami. Powiedzmy, że to jest klasa wygenerowana automatycznie:
public partial class UserProfile
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
}
Powiedzmy, że chciałbym dodać atrybut określający, że UserId jest kluczem. Utworzyłbym wtedy klasę częściową w innym pliku, takim jak ten:
[Table("UserProfile")]
[MetadataType(typeof(UserProfileMetadata))]
public partial class UserProfile
{
internal sealed class UserProfileMetadata
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
}
}