Pergunta

Eu gostaria de usar um enum como Chave Estrangeira em um Código-Primeiro aplicativo.Desde as enumerações são armazenados como int, eu pensei que eu poderia usar o atributo [ForeignKey] no enum propriedade, mas lança essa exceção:

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

Aqui está um exemplo do que estou tentando fazer:

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; }
    ...
}

É possível fazer isso ou algo semelhante através de api fluente ou migrações?

Obrigado

Foi útil?

Solução

Aqui está o que eu fiz anteriormente: https://www.nuget.org/packages/ef-enum-to-lookup

É um pacote do nuget que fornece um método que você pode chamar de seu Seed (inicializador e/ou migrações) que irá construir tabelas de pesquisa e adicionar FKs onde o enum é usado. Informações de uso.

Desfrutar de :-) E deixe-me saber se ele funciona para você (ou qualquer outra coisa para essa matéria!)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top