Как перенести класс, используя перечисления Generi c с Entity Framework Core? - PullRequest
0 голосов
/ 10 марта 2020

Как бы вы перенесли этот класс автомобилей в базу данных, используя Entity Framework?

У меня есть основной класс автомобилей (который наследуется от класса интерфейса автомобилей) с одним свойством Generi c, которое называется Part * 1003. *

public class Car<Parts> : GenericCarInterface
{
    public Parts Part { get; set; }
}

Затем у меня есть несколько перечислений, представляющих разные части, которые могут быть переданы в свойство Generi c Parts класса автомобиля

public enum VokswagenParts
{
    VWWheels,
    VWLights,
    VWEngine
}

public enum TyotaParts
{
    ToyotaSpoiler,
    ToyotaAirFilter,
    ToyotaBrakes
}

public enum FiatParts
{
    FiatExhaust,
    FiatSuspension,
    FiatCVOuter
}

. Я предполагаю настроить ApplicationDbContext следующим образом, но EF не знает, что делать со свойством Part

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"ConnectionStringHere");
    }

    public DbSet<GenericCarInterface> Cars { get; set; }
}

Есть идеи о том, как это можно сделать с помощью Entity Framework Core?

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Я думаю, я мог найти решение.

Если я могу создать отдельный класс в своем хранилище для хранения числовых значений перечисления и имен типов перечисления:

public class Car
{
     public Guid CarId { get; set; }
     public Part Part { get; set; }
} 

public class Part
{
    public Guid CarId { get; set; }
    public Guid PartId { get; set; }
    public int Enum { get; set; }
    public string EnumName { get; set; }
}

Тогда я могу сохранить этот стандартный класс в базе данных, а затем просто перезапустить -компилировать код обратно в исходный формат класса Car непосредственно перед переносом между слоями

Я мог бы создать отдельное перечисление для имен деталей, просто чтобы оно оставалось строго типизированным, но мне нравится идея сохранения имен не просто перечислимые числа

0 голосов
/ 10 марта 2020

Глядя на ваши перечисления, кажется, что каждая часть имеет уникальное имя. если вы не возражаете против того, сгруппированы ли ваши детали или нет, вы можете собрать все свои части в одно перечисление.

public enum Parts {
    VWWheels,
    VWLights,
    VWEngine,
    ToyotaSpoiler,
    ToyotaAirFilter,
    ToyotaBrakes,
    FiatExhaust,
    FiatSuspension,
    FiatCVOuter
}

, тогда в классе вашего автомобиля вы можете сделать это

public Parts Parts { get; set; }

EF должен уметь справляться с остальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...