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); }
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); }