private List<AdoParameterInfo> GetParametersForAllReferenceAndRegularColumns(object entity)
{
var parameters = new List<AdoParameterInfo>();
foreach (var referenceInfo in References)
{
var referencedEntity = referenceInfo.PropertyInfo.GetValue(entity, null);
var referencePrimaryKeyProperty = MetaDataStore.GetTableInfoFor(referenceInfo.ReferenceType).PrimaryKey.PropertyInfo;
if (referencedEntity == null)
{
parameters.Add(new AdoParameterInfo(referenceInfo.Name, referenceInfo.DbType, null));
}
else
{
parameters.Add(new AdoParameterInfo(referenceInfo.Name, referenceInfo.DbType, referencePrimaryKeyProperty.GetValue(referencedEntity, null)));
}
}
foreach (var columnInfo in Columns)
{
parameters.Add(new AdoParameterInfo(columnInfo.Name, columnInfo.DbType, columnInfo.PropertyInfo.GetValue(entity, null)));
}
return parameters;
}