Beispiel #1
0
        internal DbParameter WrapinDbParameter(DataTable dataTable, DbParameterSettings dbParameterSettings)
        {
            if (dbParameterSettings == null)
            {
                throw new ArgumentNullException(nameof(dbParameterSettings));
            }

            dataTable.TableName = dbParameterSettings.DatabaseObjectName;

            switch (dbParameterSettings.DatabaseType)
            {
            case DatabaseType.Sql:
                return(new SqlParameter(dbParameterSettings.ParameterName, SqlDbType.Structured)
                {
                    Value = dataTable,
                    TypeName = dbParameterSettings.DatabaseObjectName
                });

            case DatabaseType.Oracle:
            case DatabaseType.MySql:
                throw new NotImplementedException($"Database type {dbParameterSettings.DatabaseType} has not been implemented yet.");

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Translates a list of objects to a database parameter
        /// </summary>
        /// <typeparam name="TProfile">Type of a translation profile</typeparam>
        /// <typeparam name="KTranslationDataType">Type of object to translate</typeparam>
        /// <param name="source">The data to translate to a data table</param>
        /// <param name="dbParameterSettings">Additional settings for generating the database parameter</param>
        /// <param name="translationName">Name of the translation to use (must be specified if more than one translation is in the provided profile for the given type)</param>
        /// <returns></returns>
        public static DbParameter TranslateToDbParameter <TProfile, KTranslationDataType>(IEnumerable <KTranslationDataType> source, DbParameterSettings dbParameterSettings, string translationName)
            where TProfile : TranslationProfile, new()
            where KTranslationDataType : new()
        {
            PreTranslateValidation();
            var engine = _engines.GetEngine <DbParameterTranslationEngine>();

            return(engine.WrapinDbParameter(engine.FillDataTable(
                                                _store.SingleInitializedTranslation <TProfile, KTranslationDataType>(translationName), source), dbParameterSettings));
        }
Beispiel #3
0
        /// <summary>
        /// Translates a list of objects to a database parameter using an adhoc translation (not contained in a TranslationProfile)
        /// </summary>
        /// <typeparam name="KTranslationDataType">Type of object to translate</typeparam>
        /// <param name="translationExpression">Translation expression to use in the translation</param>
        /// <param name="source">The data to translate to a data table</param>
        /// <param name="dbParameterSettings">Additional settings for generating the database parameter</param>
        /// <returns>Translated database parameter</returns>
        public static DbParameter AdhocTranslateToDbParameter <KTranslationDataType>(TranslationExpression <KTranslationDataType> translationExpression,
                                                                                     IEnumerable <KTranslationDataType> source, DbParameterSettings dbParameterSettings)
            where KTranslationDataType : new()
        {
            var tmpEngine             = new DbParameterTranslationEngine();
            var initialzedTranslation =
                InitializedTranslation.CreateInstance(translationExpression.Translation, new List <TranslationEngine> {
                tmpEngine
            });

            return(tmpEngine.WrapinDbParameter(tmpEngine.FillDataTable(initialzedTranslation, source), dbParameterSettings));
        }