EF从字符串中获取映射的列名
本文关键字:映射 获取 字符串 EF | 更新日期: 2023-09-27 18:14:42
我有三个共享公共基类的实体。对于我的上下文,每个实体都有自己的Map类,并且加载得很好。每个实体都有一个不同的主键名,我在基类中重命名它,这样我就可以在使用相同属性名的同时使用这三个实体的泛型方法。
当进入数据库时,一切都映射得很好,例如,我可以做db.Vehicle.Where(v => v.VehicleID < 100)
,它转换为与VehicleID
不同的DB列名。
问题是我现在想走相反的方向。例如,我可能有字符串"Length"
,但在一个表中它可能是Length1
,在另一个表中它可能是Length2
。我想使用我在模型构建器中使用的相同映射,以便能够将"Length"
转换为基于基类中的(v => v.Length
)属性的任何相应值。
有谁对如何实现这一点有什么想法吗?
如果您已经尝试过这个流畅的API,但它没有工作,那么我建议将该属性声明为virtual。
modelBuilder.Entity<ConcreteClass1>()
.Property(f => f.Length)
.HasColumnName("Length1");
modelBuilder.Entity<ConcreteClass2>()
.Property(f => f.Length)
.HasColumnName("Length2");