我有一个数据库,其中包含各种对象的映射值表。
例如,Colour
表包含BLK > Black, BLU > BLUE, ORA > ORANGE
等...而CarType
表包含4DH > Four-door hatchback, 4WD > Four wheel drive
等...
我首先使用实体框架代码,所以我有一个类似这样的上下文设置。
public class MappingContext : DbContext
{
public MappingContext ()
: base("Mappings")
{
}
public DbSet<Colour> ColourMappings { get; set; }
public DbSet<CarType> CarTypeMappings { get; set; }
}
与我的数据库中的每个表相关的每个对象都Mapping
继承自一个基类,如下所示:
public class Mapping
{
public int Id { get; set; }
public string OrignalValue { get; set; }
public string MappedValue { get; set; }
}
public class CarType : Mapping{}
public class Colour : Mapping{}
现在我要做的是从一个填充了“模板”的 XML 文件中读取这些映射,其中包含映射并将它们插入数据库中。
我有以下方法可以做到这一点:
public void InsertMappings(XDocument xml, string templateName, Type typeToInsert)
{
// Here I find the relevent mappings
using (var repo = new Repository())
{
var mapppings = mappings.Select(mapping => new Mapping
{
MappedValue = mapping.Value,
OrignalValue = GetCode(mapping)
});
foreach (var mapping in mapppings.ToList())
{
var map = (typeToInsert)mapping // << This line will not compile
repo.Insert(map);
}
repo.Save();
}
}
这将不符合要求,因为它无法识别尝试的强制转换“(typeToInsert)mapping”。
所以基本上我需要知道的是在将它插入数据库时如何将这个映射对象转换为特定的映射对象?或者任何关于更好的方法的建议!