【发布时间】:2019-01-30 11:10:47
【问题描述】:
我有一个包含大约 20 个属性的组件的数据库。为了确定是否需要更新,我想检查这两个对象的所有属性(除了 DateCreated 和 Id 之外)是否匹配。 如果全部匹配则不更新,如果不匹配,则更新db。
Component comp_InApp = new Component()
{
Id = null,
Description = "Commponent",
Price = 100,
DateCreated = "2019-01-30",
// Twenty more prop
};
Component comp_InDb = new Component()
{
Id = 1,
Description = "Component",
Price = 100,
DateCreated = "2019-01-01",
// Twenty more prop
};
// Check if all properties match, except DateCreated and Id.
if (comp_InApp.Description == comp_InDb.Description &&
comp_InApp.Price == comp_InDb.Price
// Twenty more prop
)
{
// Everything up to date.
}
else
{
// Update db.
}
这可行,但它不是一个非常干净的方式,有 20 个属性。有没有更好的方法以更清洁的方式实现相同的结果?
【问题讨论】:
-
您可以使用
Equals和GetHashCode方法,也可以使用可以为您进行比较的等式库。 -
Comparing object properties in c# 的可能重复项。用 64 票检查答案。这样的事情很容易通过一些库来完成。
-
不要使用字符串来存储
DateTime