c# - 如何使用 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 可以完成的方式的任何想法?
解决方案
我想我可能已经找到了解决方案。
如果我可以在我的存储库中创建一个单独的类来保存枚举数值和枚举类型名称:
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 类格式
我可能会为部件名称创建一个单独的枚举,以保持它的强类型,但我喜欢让名称保持不变的想法,而不仅仅是枚举编号
推荐阅读
- flutter - 使按钮/小部件出现 X 天或从 Date_X 到 Date_Z 的特定时间段
- date - Google STT - 德语 - 完整数字日期未正确转录
- android - 谷歌地点自动完成错误:“意图包含地点,但不包含”
- php - 调整图像大小时降低质量
- c++ - 如何在 C++ 中获取 const 数组的大小?
- linux - Cobra init 不工作,:找不到命令
- html - 如何从由
- http - Xamarin.Froms 上使用的 HttpClient、WebClient
- python - 标记图像的异常值集群
- kubernetes - 来自 K8s pod 的数据库连接问题