/// <summary> /// Gets a delete statement for a business object of type T. /// </summary> /// <typeparam name="T">a type of a business object to get a delete statement for</typeparam> /// <param name="map">a micro ORM map for a business object type</param> protected abstract string GetDeleteStatement <T>(OrmEntityMap <T> map) where T : class;
/// <summary> /// Gets an update statement for a business object of type T for a particular update scope. /// </summary> /// <typeparam name="T">a type of a business object to get an update statement for</typeparam> /// <param name="map">a micro ORM map for a business object type</param> /// <param name="scope">a scope of the update operation; a business objects can define /// different update scopes (different collections of properties) as an ENUM /// which nicely converts into int.</param> protected abstract string GetUpdateStatement <T>(OrmEntityMap <T> map, int?scope) where T : class;
/// <summary> /// Gets a (trivial) select all (table) query for business objects of type T using integrated micro ORM. /// </summary> /// <typeparam name="T">a type of business objects to get a statement for</typeparam> /// <param name="map">a micro ORM map for a business object type</param> protected abstract string GetSelectAllQuery <T>(OrmEntityMap <T> map) where T : class;
/// <summary> /// Gets a (trivial) insert statement for a business object of type T using integrated micro ORM. /// </summary> /// <typeparam name="T">a type of a business object to get a statement for</typeparam> /// <param name="map">a micro ORM map for a business object type</param> /// <param name="extraParams">extra parameters for insert if some of the business object data /// fields are not reflected as properties, e.g. operation type, parent id etc.; /// this kind of fields shall be insert only; name of a parameter for such a field shall /// match database field name</param> protected abstract string GetInsertStatement <T>(OrmEntityMap <T> map, SqlParam[] extraParams) where T : class;
/// <summary> /// Gets a (trivial) select by null parent id statement for business objects of type T using integrated micro ORM. /// </summary> /// <typeparam name="T">a type of a business objects to get a select statement for</typeparam> /// <param name="map">a micro ORM map for a business object type</param> protected abstract string GetSelectByNullParentIdQuery <T>(OrmEntityMap <T> map) where T : class;