さまざまなオブジェクトのマッピング値のテーブルを含むデータベースがあります。
たとえば、Colour
テーブルには etc が含まれBLK > Black, BLU > BLUE, ORA > ORANGE
ており、CarType
テーブルには4DH > Four-door hatchback, 4WD > Four wheel drive
etcが含まれています。
私はEntity Frameworkコードファーストを使用しているので、このようなコンテキストを設定しています。
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 ファイルからこれらのマッピングを読み取り、DB に挿入することです。
これを行うには、次の方法があります。
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」を認識しないため、準拠しません。
したがって、基本的に私が知る必要があるのは、このマッピング オブジェクトをデータベースに挿入するときに、このマッピング オブジェクトを特定のマッピング オブジェクトにキャストする方法です。または、これを行うためのより良い方法についての提案!