Вопрос

Я бы хотел использовать перечисление в качестве внешнего ключа в приложении, основанном на коде.Поскольку перечисления хранятся как int, я подумал, что мог бы использовать атрибут [ForeignKey] в свойстве enum, но он выдает это исключение:

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

Вот пример того, что я пытаюсь сделать:

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

Возможно ли сделать это или что-то подобное с помощью fluent api или миграций?

Спасибо

Это было полезно?

Решение

Вот один, который я сделал ранее: https://www.nuget.org/packages/ef-enum-to-lookup

Это пакет nuget, который предоставляет метод, который вы можете вызвать в своем Seed (инициализатор и/или миграции), который автоматически создаст таблицы поиска и добавит FKS, где используется перечисление. Информация об использовании.

Наслаждайтесь :-) И дайте мне знать, сработает ли это у вас (или у кого-либо еще, если уж на то пошло!)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top