Question

J'aimerais utiliser une énumération comme clé étrangère dans une application Code-First.Puisque les énumérations sont stockées au format int, j'ai pensé pouvoir utiliser l'attribut [ForeignKey] sur la propriété enum, mais cela lève cette exception :

The types of all properties in the Dependent Role of a referential constraint 
must be the same as the corresponding property types in the Principal Role

Voici un exemple de ce que j'essaie de faire:

public enum UserType
{
    Administrator = 1,
    Member = 2
}

public class User
{
    public int UserId { get; set; }
    public string Login { get; set; }

    [ForeignKey("TypeDetails")]
    public UserType Type { get; set;}

    public virtual MasterType TypeDetails { get; set; }
}

public class MasterType
{
    public int MasterTypeId { get; set; }
    public string Description { get; set; }
    ...
}

Est-il possible de faire ceci ou quelque chose de similaire via une API ou des migrations fluides ?

Merci

Était-ce utile?

La solution

En voici un que j'ai réalisé plus tôt : https://www.nuget.org/packages/ef-enum-to-lookup

C'est un package nuget qui fournit une méthode que vous pouvez appeler dans votre Seed (initialiseur et/ou migrations) qui construira automatiquement des tables de recherche et ajoutera des FK là où l'énumération est utilisée. Informations d'utilisation.

Profitez-en :-) Et faites-moi savoir si cela fonctionne pour vous (ou pour quelqu'un d'autre d'ailleurs !)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top