首页 > 解决方案 > 如何使用 Entity Framework Core 的通用枚举迁移类?

问题描述

您将如何使用实体框架将此汽车类迁移到数据库?

我有一个主汽车类(继承自汽车接口类),它有一个名为 Part 的通用属性

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

然后我有几个代表不同部分的枚举,它们可以传递到 Car 类的 Generic 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 可以完成的方式的任何想法?

标签: c#entity-framework-core

解决方案


我想我可能已经找到了解决方案。

如果我可以在我的存储库中创建一个单独的类来保存枚举数值和枚举类型名称:

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 类格式

我可能会为部件名称创建一个单独的枚举,以保持它的强类型,但我喜欢让名称保持不变的想法,而不仅仅是枚举编号


推荐阅读