Esempio n. 1
0
        /// <summary>
        /// Updates project's custom order properties info.
        /// </summary>
        /// <param name="projectConfig">Project configuration.</param>
        /// <param name="propertiesInfo">Order custom properties info.</param>
        /// <exception cref="DataException">Failed to update database.</exception>
        public static void UpdateProjectCustomOrderPropertiesInfo(ProjectConfiguration projectConfig,
                                                                  OrderCustomPropertiesInfo propertiesInfo)
        {
            Debug.Assert(projectConfig != null);
            Debug.Assert(propertiesInfo != null);

            DataObjectContext dataContext = null;

            try
            {
                // Open database.
                dataContext = DatabaseOpener.OpenDatabase(projectConfig.DatabasePath);

                // Update custom order properties info in database.
                dataContext.UpdateCustomOrderPropertiesInfo(propertiesInfo);
            }
            catch (Exception ex)
            {
                // Failed to update database.
                throw new DataException(Properties.Messages.Error_DatabaseUpdate, ex, DataError.DatabaseUpdateError);
            }
            finally
            {
                if (dataContext != null)
                {
                    dataContext.Dispose();
                }
            }
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            DataObjectContext ObjectContext = new DataObjectContext();

            ObjectContext.Install();

            InitialData.SetYear(2016, 2020);
            InitialData.Initial();


            Database.SetInitializer <DataObjectContext>(new DropCreateDatabaseIfModelChanges <DataObjectContext>());

            var builder = new ContainerBuilder();

            builder.RegisterType <GenericRepository <BasicFinancialContainParentDataModel> >().As <IRepository <BasicFinancialContainParentDataModel> >()
            .InstancePerLifetimeScope();
        }
        ///////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Opens SQL Server CE database using specified file path.
        /// Upgrades database if scheme version less than the current one.
        /// </summary>
        /// <param name="path">
        /// Database file path.
        /// </param>
        /// <returns>
        /// DataObjectContext object.
        /// </returns>
        public static DataObjectContext OpenDatabase(string path)
        {
            Debug.Assert(path != null);

            try
            {
                string sqlConnStr = DatabaseHelper.BuildSqlConnString(path, true);

                // upgrade database if necessary
                CheckForDbUpgrade(sqlConnStr);

                // create object context
                DataObjectContext ctx = new DataObjectContext(
                    _BuildEntityConnStr(sqlConnStr));

                // keep connection alive to ensure exclusive mode
                ctx.Connection.Open();

                return ctx;
            }
            catch (Exception e)
            {
                Logger.Error(e);

                SqlCeException ceEx = _GetCEException(e);
                if (ceEx != null &&
                    ceEx.NativeError == SSCE_M_FILESHAREVIOLATION)
                {
                    throw new DataException(Properties.Messages.Error_DbFileSharingViolation,
                        DataError.FileSharingViolation);
                }
                else
                    throw;
            }
        }