Dapper.Contrib - 如何获取更改跟踪值?
问题描述:
我正在使用Dapper作为ORM的.Net项目。 EF并不是一个真正的选择,因为我们需要DB/schema在运行时具有一定的灵活性。Dapper.Contrib - 如何获取更改跟踪值?
使用Dapper.Contrib,我们可以使用“更改跟踪”功能来优化写入数据库的内容。我们真正喜欢的是能够访问这些信息(发生了什么变化),并将其写入“更改历史记录”日志。
在Dapper.Contrib中似乎没有很多关于此的文档。有没有人对如何做到这一点提出任何建议?谢谢。
答
好吧,它看起来像Dapper.Contrib'更改跟踪'只是一个效率帮手(它只写SQL实际更改)。我已经使用了反射来在启动时预加载模型结构,然后用它来检查我的两个模型版本之间的变化。
如果有帮助的人,代码看起来是这样的(注意testProps是类属性的体现名单,DifferenceCompare是跟踪变化的简单模型):
List<DifferenceCompare> differences = new List<DifferenceCompare>();
foreach (PropertyInfo property in testProps)
{
object value1 = property.GetValue(one, null);
object value2 = property.GetValue(two, null);
if (value1 != null && value2 != null)
{
if (!value1.Equals(value2))
{
differences.Add(new DifferenceCompare(
property.Name.ToString(),
value1.ToString(),
value2.ToString()));
}
}
else if (value1 == null && value2 != null)
{
differences.Add(new DifferenceCompare(
property.Name.ToString(), "", value2.ToString()));
}
}
感谢Oskar Kjellin为起点这点。