【发布时间】:2016-06-17 19:10:44
【问题描述】:
我想根据对象的实现扩展某些 ORMLite 方法。例如,
我有一个界面:
public interface IHaveTimestamps
{
DateTime CreatedOn { get; set; }
DateTime UpdatedOn { get; set; }
}
现在我想覆盖 Db.Insert<T>() 方法,仅当 T 实现 IHaveTimestamps 并且对于 T 的其他实例,它应该基于默认行为执行 Insert。
这样我可以集中设置 CreatedOn 和 UpdatedOn 值,而不是到处手动设置。
我可以通过重载插入/更新方法来做到这一点,这样我需要做的就是更新模型以从接口继承,所有数据库操作都会自行处理,还是我需要做类似的事情这个:
public static class DbExtensions
{
public static long MyInsert<T> (this IDbConnection dbConn, T obj, bool selectIdentity = false) where T : IHaveTimestamps {
obj.CreatedOn = DateTime.UtcNow;
obj.UpdatedOn = DateTime.UtcNow;
return dbConn.Insert<T>(obj);
}
public static long MyUpdate<T> (this IDbConnection dbConn, T obj) where T : IHaveTimestamps {
obj.UpdatedOn = DateTime.UtcNow;
return dbConn.Update<T>(obj);
}
}
【问题讨论】:
标签: servicestack ormlite-servicestack