我有三个共享公共基类的实体。每个实体都有自己的上下文Map类,加载得很好。每个实体都有一个不同的主键名称,我在基类中重命名,因此我可以在使用相同的属性名称时使用这三个实体的泛型方法。
进入数据库时,一切都可以正常映射,例如我可以db.Vehicle.Where(v => v.VehicleID < 100)
,它会转换为与VehicleID
不同的数据库列名。
问题是我现在想要走向相反的方向。例如,我可能有字符串"Length"
但在一个表中它可能是Length1
而在另一个Length2
中。我想使用我在模型构建器中使用的相同映射,以便能够将"Length"
转换为基类中基于(v => v.Length
)属性的相应值。
有没有人对如何实现这一点有任何想法?
答案 0 :(得分:0)
如果您已经尝试过这种流畅的API并且它不起作用,那么我建议将该属性声明为虚拟属性。
modelBuilder.Entity<ConcreteClass1>()
.Property(f => f.Length)
.HasColumnName("Length1");
modelBuilder.Entity<ConcreteClass2>()
.Property(f => f.Length)
.HasColumnName("Length2");