それぞれにいくつかの仮想プロパティを含むPOCOクラスがたくさんあります。このようなもの:
public class Policy
{
public int Id { get; set; }
public int EntityId { get; set; }
public int ProgramId { get; set; }
public string PolicyNumber { get; set; }
public DateTime EffectiveDate { get; set; }
public DateTime ExpirationDate { get; set; }
public virtual Entity Entity{ get; set; }
public virtual Program Program { get; set; }
public virtual ICollection<Transaction> Transactions { get; set; }
}
作業を行うDapper.Extensions
には、これらのクラスごとにマッピングを作成する必要がありますが、これで問題ありません。私の問題は、クラス内にプロパティがある場合、それらを明示的にignoredvirtual
としてマークする必要があることです。これは私がいつも忘れていることです。
public sealed class PolicyMapper : BaseMapper<Policy>
{
public PolicyMapper()
{
Map(p => p.Entity).Ignore();
Map(p => p.Program).Ignore();
Map(p => p.Transactions).Ignore();
AutoMap();
}
}
Dapper.Extensions
POCO クラスにマップされたときに、ライブラリが仮想プロパティを自動的に除外する場合、私にとって何が素晴らしいでしょうか。Automapper
同様のことを行うための拡張機能があります(リンク)。Dapper.Extensions
ライブラリでそれを行う方法はありますか?おそらく次のようなものです:
public sealed class PolicyMapper : BaseMapper<Policy>
{
public PolicyMapper()
{
IgnoreAllVirtual();
AutoMap();
}
}