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为起点这点。