私は NPoco をいじり始めたばかりですが、まだドキュメントで必要なものを見つけていません。
たとえば、自分のドメインにCreated
はフィールドがありますが、データベースでは UTC に設定されているとします。NPoco にこれらの型を変換させる方法はありますか?Instant
DateTimeOffset
これはとても簡単です。以下の例は、PostgreSQL の日時型を処理するために使用されるものですが、おそらくこのコードはかなり簡単に適応させることができます。
public class Mapper : DefaultMapper
{
public override Func<object, object> GetFromDbConverter(Type DestType, Type SourceType)
{
if (DestType == typeof(DateTimeOffset) || DestType == typeof(DateTimeOffset?)
|| DestType == typeof(DateTime) || DestType == typeof(DateTime?))
{
return x =>
{
if (x is NpgsqlTimeStampTZ)
{
if (DestType == typeof(DateTime))
return (DateTime)((NpgsqlTimeStampTZ)x);
if (DestType == typeof(DateTime?))
return (DateTime?)((NpgsqlTimeStampTZ)x);
if (DestType == typeof(DateTimeOffset))
return (DateTimeOffset)((NpgsqlTimeStampTZ)x);
if (DestType == typeof(DateTimeOffset?))
return (DateTimeOffset?)((NpgsqlTimeStampTZ)x);
}
if (x is NpgsqlTimeStamp)
{
if (DestType == typeof(DateTime))
return (DateTime)((NpgsqlTimeStamp)x);
if (DestType == typeof(DateTime?))
return (DateTime?)((NpgsqlTimeStamp)x);
}
if (x is NpgsqlDate)
{
if (DestType == typeof(DateTime))
return (DateTime)((NpgsqlDate)x);
if (DestType == typeof(DateTime?))
return (DateTime?)((NpgsqlDate)x);
}
return x;
};
}
return base.GetFromDbConverter(DestType, SourceType);
}
public override Func<object, object> GetToDbConverter(Type DestType, Type SourceType)
{
if (SourceType == typeof(Instance)) {
return x => { return ((Instance)x).ToDateTimeOffset(); } // etc or something like this
}
return base.GetToDbConverter(DestType, SourceType);
}
}
さらに質問がある場合は、github の問題ページに質問を投稿してください。乾杯、アダム