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; }
public ReferenceInfo(MetaDataStore store, string name, Type referenceType, PropertyInfo propertyInfo) : base(store, name, store.GetTableInfoFor(referenceType).PrimaryKey.DotNetType, store.GetTableInfoFor(referenceType).PrimaryKey.DbType, propertyInfo) { ReferenceType = referenceType; }