internal InsertUpdateQuery(PropertyBinder aBinder, T aData, bool isNullBind, ValueExtractor anExtractor) : base(aBinder) { ValueBinder valuebinder = Database.Current.Factory.GetValueBinder(); aBinder.BindProperty <T>( delegate(PropertyMap aMap) { valuebinder.BindValue(query.GetStatement(), aMap, aData, isNullBind); }, delegate(IdentityMap aMap) { setIdentity(aMap.GetColumn()); }, delegate(PropertyMap aMap, MemberInfo[] aParentsMembers) { var field = anExtractor.GetValue(aData, aParentsMembers); valuebinder.BindValue(query.GetStatement(), aMap, field, isNullBind); }); }