public T BuildNew <T>(bool suppressEventing)
            where T : class, IData
        {
            ValidateBuildNewType(typeof(T));

            Type generatedType = DataTypeTypesManager.GetDataTypeEmptyClass(typeof(T));

            IData data = (IData)Activator.CreateInstance(generatedType, new object[] { });

            SetNewInstanceFieldDefaultValues(data);

            if (suppressEventing == false)
            {
                DataEventSystemFacade.FireDataAfterBuildNewEvent <T>(data);
            }

            return((T)data);
        }
示例#2
0
        public List <T> AddNew <T>(IEnumerable <T> datas, bool allowStoreCreation, bool suppressEventing, bool performForeignKeyIntegrityCheck, bool performValidation, List <string> writeableProviders)
            where T : class, IData
        {
            if (writeableProviders == null)
            {
                writeableProviders = GetWritableDataProviders(typeof(T));
            }

            if (writeableProviders.Count == 0 &&
                typeof(T).GetCustomInterfaceAttributes <AutoUpdatebleAttribute>().Any() &&
                allowStoreCreation)
            {
                if (!DataTypeTypesManager.IsAllowedDataTypeAssembly(typeof(T)))
                {
                    string message = string.Format("The data interface '{0}' is not located in an assembly in the website Bin folder. Please move it to that location", typeof(T));
                    Log.LogError(LogTitle, message);
                    throw new InvalidOperationException(message);
                }

                lock (_storeCreationLock)
                {
                    writeableProviders = GetWritableDataProviders(typeof(T));

                    if (writeableProviders.Count == 0)
                    {
                        Log.LogVerbose(LogTitle, string.Format("Type data interface '{0}' is marked auto updateble and is not supported by any providers. Adding it to the default dynamic type data provider", typeof(T)));

                        List <T> result;
                        DynamicTypeManager.EnsureCreateStore(typeof(T));

                        result = AddNew <T>(datas, false, suppressEventing, performForeignKeyIntegrityCheck, performValidation, null);
                        return(result);
                    }
                }
            }

            if (writeableProviders.Count == 1)
            {
                return(AddNew_AddingMethod <T>(writeableProviders[0], datas, suppressEventing, performForeignKeyIntegrityCheck, performValidation));
            }

            throw new InvalidOperationException(string.Format("{0} writeable data providers exists for data '{1}'.", writeableProviders.Count, typeof(T)));
        }
        public IData BuildNew(Type interfaceType, bool suppressEventling)
        {
            if (interfaceType == null)
            {
                throw new ArgumentNullException("interfaceType");
            }

            ValidateBuildNewType(interfaceType);

            Type generatedType = DataTypeTypesManager.GetDataTypeEmptyClass(interfaceType);

            IData data = (IData)Activator.CreateInstance(generatedType, new object[] { });

            SetNewInstanceFieldDefaultValues(data);

            if (!suppressEventling)
            {
                DataEventSystemFacade.FireDataAfterBuildNewEvent(generatedType, data);
            }

            return(data);
        }