|
|
@ -10,19 +10,15 @@ namespace Connected.Data.Storage
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public static void Bind(IStorageOperation operation, object entity)
|
|
|
|
public static void Bind(IStorageOperation operation, object entity)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
List<PropertyInfo> properties = null;
|
|
|
|
if (operation is null || operation.Parameters is null)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var parameter in operation.Parameters)
|
|
|
|
foreach (var parameter in operation.Parameters)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (parameter.Direction != ParameterDirection.ReturnValue && parameter.Direction != ParameterDirection.Output)
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (parameter.Value == DBNull.Value)
|
|
|
|
if (parameter.Value == DBNull.Value)
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
if (properties is null)
|
|
|
|
var properties = new List<PropertyInfo>();
|
|
|
|
{
|
|
|
|
|
|
|
|
properties = new List<PropertyInfo>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var all = operation.GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
|
|
|
var all = operation.GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
|
|
|
|
|
|
|
|
|
|
@ -31,12 +27,9 @@ namespace Connected.Data.Storage
|
|
|
|
if (prop.FindAttribute<ReturnValueAttribute>() is not null)
|
|
|
|
if (prop.FindAttribute<ReturnValueAttribute>() is not null)
|
|
|
|
properties.Add(prop);
|
|
|
|
properties.Add(prop);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PropertyInfo property = null;
|
|
|
|
PropertyInfo? property = null;
|
|
|
|
|
|
|
|
|
|
|
|
if (property is null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
foreach (var prop in properties)
|
|
|
|
foreach (var prop in properties)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (string.Equals(prop.Name, parameter.Name, StringComparison.Ordinal))
|
|
|
|
if (string.Equals(prop.Name, parameter.Name, StringComparison.Ordinal))
|
|
|
@ -45,7 +38,6 @@ namespace Connected.Data.Storage
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (property is null)
|
|
|
|
if (property is null)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -82,26 +74,28 @@ namespace Connected.Data.Storage
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (property is not null)
|
|
|
|
if (property is null)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
var existingValue = property.GetValue(operation);
|
|
|
|
var existingValue = property.GetValue(operation);
|
|
|
|
var overwriteAtt = property.FindAttribute<ReturnValueAttribute>();
|
|
|
|
var overwriteAtt = property.FindAttribute<ReturnValueAttribute>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (overwriteAtt is null)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
switch (overwriteAtt.ValueBehavior)
|
|
|
|
switch (overwriteAtt.ValueBehavior)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case PropertyValueBehavior.OverwriteDefault:
|
|
|
|
case PropertyValueBehavior.OverwriteDefault:
|
|
|
|
var defaultValue = property.PropertyType.GetDefault();
|
|
|
|
var defaultValue = property.PropertyType.GetDefault();
|
|
|
|
|
|
|
|
|
|
|
|
if (Equals(existingValue, defaultValue))
|
|
|
|
if (Equals(existingValue, defaultValue))
|
|
|
|
property.SetValue(operation, parameter.Value);
|
|
|
|
property.SetValue(entity, parameter.Value);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case PropertyValueBehavior.AlwaysOverwrite:
|
|
|
|
case PropertyValueBehavior.AlwaysOverwrite:
|
|
|
|
property.SetValue(operation, parameter.Value);
|
|
|
|
property.SetValue(entity, parameter.Value);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|