我有这样的类结构
public class Entity
{
public int Id { get; set; }
public string Label { get; set; }
public string Description { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime ModifiedAt { get; set; }
public DateTime? DeletedAt { get; set;
}
我填充所有属性并将其保存到DB,之后我从DB获取此对象
var entity = CreateEntity()
SaveToDB(entity);
var entityFromDb = GetFromDB();
并尝试以这种方式比较值
Assert.AreEqual(entity, entityFromDb);
并且DateTime和Decimal值的比较是faild
预期值相等。
预期价值: Id = 28, CreatedAt = 2011-01-05T14:06:32。 6874218Z , DeletedAt = null, Description =“描述”, 持续时间= 2000米, Label =“测试实体”, ModifiedAt = 2011-01-05T14:06:32。 6874218Z
实际价值: Id = 28, CreatedAt = 2011-01-05T14:06:32。 0000000 , DeletedAt = null, Description =“描述”, 持续时间= 2000.00000m , Label =“测试实体”, ModifiedAt = 2011-01-05T14:06:32。 0000000
我可以用某种方式比较这些值,但不对每个字段进行比较
答案 0 :(得分:3)
一个选项是更改DateTimes的setter,以便它们在那时执行截断 - 基本上问题是你的DB没有存储亚秒精度,所以在实体中也没有它是合理的。
我希望十进制值已经相等,即使它们具有不同的存储精度。 (1.000m和1.0m有不同的表示,但被认为是相同的。)