|
@@ -87,7 +87,6 @@ namespace InABox.Core
|
|
|
public virtual bool Synchronise(object Entity)
|
|
|
{
|
|
|
var result = false;
|
|
|
- var props = CoreUtils.PropertyList(GetType(), x => (!x.Name.Equals("ID") || Entity == null) && !x.DeclaringType.Equals(typeof(BaseObject)), false);
|
|
|
foreach (var prop in DatabaseSchema.Properties(GetType()))
|
|
|
{
|
|
|
if (prop.Name == "ID" || !(prop is StandardProperty stdProp) || stdProp.Property.DeclaringType.Equals(typeof(BaseObject))) continue;
|
|
@@ -112,17 +111,20 @@ namespace InABox.Core
|
|
|
{
|
|
|
var result = false;
|
|
|
var props = CoreUtils.PropertyList(GetType(), x => !x.Name.Equals("ID"), false);
|
|
|
- foreach (var key in props.Keys)
|
|
|
+
|
|
|
+ foreach (var prop in DatabaseSchema.Properties(GetType()))
|
|
|
{
|
|
|
- var prop = CoreUtils.GetProperty(typeof(T), key);
|
|
|
- if (prop != null && prop.PropertyType.Equals(props[key]))
|
|
|
+ if (prop.Name == "ID" || !(prop is StandardProperty stdProp) || stdProp.Property.DeclaringType.Equals(typeof(BaseObject))) continue;
|
|
|
+
|
|
|
+ var entityProp = DatabaseSchema.Property(typeof(T), prop.Name);
|
|
|
+ if(entityProp != null && entityProp.PropertyType == stdProp.PropertyType)
|
|
|
{
|
|
|
- var oldvalue = CoreUtils.GetPropertyValue(this, key);
|
|
|
- var newvalue = prop.PropertyType.Equals(typeof(string)) ? "" : Activator.CreateInstance(prop.PropertyType);
|
|
|
- if ((oldvalue == null && newvalue != null) || (oldvalue != null && !oldvalue.Equals(newvalue)))
|
|
|
+ var oldValue = prop.Getter()(this);
|
|
|
+ var newValue = CoreUtils.GetDefault(prop.PropertyType);
|
|
|
+ if(!object.Equals(oldValue, newValue))
|
|
|
{
|
|
|
result = true;
|
|
|
- CoreUtils.SetPropertyValue(this, key, newvalue);
|
|
|
+ prop.Setter()(this, newValue);
|
|
|
}
|
|
|
}
|
|
|
}
|