Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用具有实体框架核心的通用枚举迁移类?_C#_Entity Framework Core - Fatal编程技术网

C# 如何使用具有实体框架核心的通用枚举迁移类?

C# 如何使用具有实体框架核心的通用枚举迁移类?,c#,entity-framework-core,C#,Entity Framework Core,如何使用实体框架将这个Car类迁移到数据库中 我有一个主car类(从car接口类继承),它有一个名为Part的泛型属性 public class Car<Parts> : GenericCarInterface { public Parts Part { get; set; } } 我设想如下设置ApplicationDbContext,但EF不知道如何利用Part属性 public class ApplicationDbContext : DbContext {

如何使用实体框架将这个Car类迁移到数据库中

我有一个主car类(从car接口类继承),它有一个名为Part的泛型属性

public class Car<Parts> : GenericCarInterface
{
    public Parts Part { get; set; }
}
我设想如下设置ApplicationDbContext,但EF不知道如何利用Part属性

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

    public DbSet<GenericCarInterface> Cars { get; set; }
}
公共类ApplicationDbContext:DbContext
{
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseSqlServer(@“ConnectionString”);
}
公共数据库集车辆{get;set;}
}

关于如何使用Entity Framework Core实现这一点,您有什么想法吗?

看看您的枚举,似乎每个部分都有一个唯一的名称。如果您不介意部件是否分组,可以将所有部件放在一个枚举中

public enum Parts {
    VWWheels,
    VWLights,
    VWEngine,
    ToyotaSpoiler,
    ToyotaAirFilter,
    ToyotaBrakes,
    FiatExhaust,
    FiatSuspension,
    FiatCVOuter
}
那么在你的汽车课上你可以做到这一点

public Parts Parts { get; set; }

EF应该能够处理其余的问题。

我想我可能已经找到了解决办法

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

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


我可能会为零件名称创建一个单独的枚举,只是为了保持强类型,但我喜欢让名称持久化的想法,而不仅仅是枚举数

谢谢你,FRANCISCO这将是一个理想的解决方案,但是我确实需要在稍后的代码中区分枚举类型。我想我可能已经找到了一个解决方案,如果我可以在我的存储库中创建一个单独的类来保存枚举数值和枚举类型名称,那么我可以将该标准类持久化到数据库中,然后只需在层间传输之前将代码重新编译回原始的Car类格式
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; }
}