Exemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 private void LoadDatabase()
 {
     this.mDatabase     = new DatabaseSerise().Load(mDatabaseName);
     this.mRealDatabase = this.mDatabase.RealDatabase;
     mPrimaryDataPath   = this.mDatabase.HisDatabase.Setting.HisDataPathPrimary;
     mBackDataPath      = this.mDatabase.HisDatabase.Setting.HisDataPathBack;
 }
        public IActionResult Index()
        {
            var database = new RealDatabase("Server=./S2017E;Database=PetsDatabase;Trusted_Connection=true;");
            var pets     = database.GetAllPets();
            var response = new ListPetsModel();

            response.Pets = pets
                            .Select(p => new PetModel()
            {
                PetId = p.PetId,
                Name  = p.Name,
            });
            public void GetServerType_returns_OnPremises_for_real_local_test_database()
            {
                using (var context = new RealDatabase())
                {
                    context.Database.CreateIfNotExists();

                    var connection = context.Database.Connection;
                    connection.Open();

                    Assert.Equal(ServerType.OnPremises, SqlVersionUtils.GetServerType(connection));

                    connection.Close();
                }
            }
Exemplo n.º 4
0
            public void GetServerType_returns_correct_ServerType_for_real_test_database()
            {
                using (var context = new RealDatabase())
                {
                    context.Database.CreateIfNotExists();

                    var connection = context.Database.Connection;
                    connection.Open();

                    var expectedServerType = DatabaseTestHelpers.IsSqlAzure(connection.ConnectionString) ? ServerType.Cloud : ServerType.OnPremises;
                    Assert.Equal(expectedServerType, SqlVersionUtils.GetServerType(connection));

                    connection.Close();
                }
            }
Exemplo n.º 5
0
        public IActionResult Index()
        {
            var database = new RealDatabase("Server=.;Database=PetsDatabase;Trusted_Connection=true;");
            var pets     = database.GetAllPets();
            var response = new ListPetsModel();

            response.Pets = pets
                            .Select(p => new PetModel()
            {
                PetId     = p.PetId,
                Name      = p.Name,
                Age       = p.Age,
                IsSpotted = p.IsSpotted,
                Color     = p.Color
            })
                            .ToArray();
            return(View(response));
        }
            public void GetServerType_returns_OnPremises_for_real_local_test_database()
            {
                using (var context = new RealDatabase())
                {
                    context.Database.CreateIfNotExists();

                    var connection = context.Database.Connection;
                    connection.Open();

                    Assert.Equal(ServerType.OnPremises, SqlVersionUtils.GetServerType(connection));

                    connection.Close();
                }
            }
Exemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="database"></param>
        public void Load(string database, string checkKey)
        {
            if (database == mDatabaseName)
            {
                return;
            }

            if (mDriver != null)
            {
                mDriver.Stop();
            }

            if (System.IO.Path.IsPathRooted(database))
            {
                this.mDatabaseName = System.IO.Path.GetFileNameWithoutExtension(database);
            }
            else
            {
                this.mDatabaseName = database;
            }
            PathHelper.helper.CheckDataPathExist();
            if (CheckDatabaseExist(mDatabaseName) && IsRunInLocal())
            {
                LoggerService.Service.Info("DatabaseRunner", "开始从本地加载数据库:" + mDatabaseName);
                var mDatabase = new RealDatabaseSerise().LoadByName(mDatabaseName);

                string skey = mDatabase.Version + mDatabase.UpdateTime;

                if (skey != checkKey)
                {
                    LoggerService.Service.Warn("Proxy", "代理使用的数据库和服务器使用的数据库不一致,将从网络进行加载");
                    this.mRealDatabase = mProxy.LoadRealDatabase();
                    mSecurityRunner    = new SecurityRunner()
                    {
                        Document = mProxy.LoadSecurity()
                    };
                }
                else
                {
                    this.mRealDatabase = mDatabase;
                    mSecurityRunner    = new SecurityRunner()
                    {
                        Document = new SecuritySerise().LoadByName(mDatabaseName)
                    };
                }
                LoggerService.Service.Info("DatabaseRunner", "从本地加载数据库完成");
            }
            else
            {
                LoggerService.Service.Info("DatabaseRunner", "开始从远程加载数据库");
                this.mRealDatabase = mProxy.LoadRealDatabase();
                mSecurityRunner    = new SecurityRunner()
                {
                    Document = mProxy.LoadSecurity()
                };
                LoggerService.Service.Info("DatabaseRunner", "从远程加载数据库完成");
            }

            realEnginer = new RealEnginer(mRealDatabase);
            realEnginer.Init();

            RegistorInterface();
            IsReady = true;

            mDriver = new NetTransformDriver()
            {
                Client = mProxy.NetworkClient, WorkMode = mWorkMode, PollCircle = mPollCircle
            };
            mDriver.ValueUpdateEvent += MDriver_ValueUpdateEvent;

            mProxy.NetworkClient.DatabaseChangedAction = (realchanged, hischanged, securitychanged) => {
                if (CheckDatabaseExist(mDatabaseName) && IsRunInLocal())
                {
                    //Stopwatch sw = new Stopwatch();
                    //sw.Start();
                    LoggerService.Service.Info("DatabaseRunner", "开始从本地加载数据库:" + mDatabaseName);

                    if (realchanged)
                    {
                        mDriver.Stop();

                        var mDatabase = new RealDatabaseSerise().LoadByName(mDatabaseName);
                        this.mRealDatabase = mDatabase;

                        var oldeng = realEnginer;
                        realEnginer = new RealEnginer(this.mRealDatabase);
                        realEnginer.Init();


                        mDriver.Start(realEnginer);

                        oldeng.Dispose();
                    }

                    if (securitychanged)
                    {
                        try
                        {
                            if (mSecurityRunner != null)
                            {
                                mSecurityRunner.Stop();
                            }
                        }
                        catch
                        {
                        }
                        mSecurityRunner.Document = new SecuritySerise().LoadByName(mDatabaseName);
                        mSecurityRunner.Start();
                    }

                    RegistorInterface();
                    //sw.Stop();

                    LoggerService.Service.Info("DatabaseRunner", "从本地加载数据库完成");
                }
                else
                {
                    //Stopwatch sw = new Stopwatch();
                    //sw.Start();

                    if (realchanged)
                    {
                        mDriver.Stop();

                        LoggerService.Service.Info("DatabaseRunner", "开始从远程加载数据库");
                        //通过远程下载数据库
                        this.mRealDatabase = mProxy.LoadRealDatabase();

                        var oldeng = realEnginer;
                        realEnginer = new RealEnginer(this.mRealDatabase);
                        realEnginer.Init();

                        mDriver.Start(realEnginer);
                        oldeng.Dispose();
                        LoggerService.Service.Info("DatabaseRunner", "从远程加载数据库完成");
                    }

                    if (securitychanged)
                    {
                        LoggerService.Service.Info("DatabaseRunner", "开始从远程加载安全配置");
                        try
                        {
                            if (mSecurityRunner != null)
                            {
                                mSecurityRunner.Stop();
                            }
                        }
                        catch
                        {
                        }
                        mSecurityRunner.Document = mProxy.LoadSecurity();
                        mSecurityRunner.Start();
                        LoggerService.Service.Info("DatabaseRunner", "从远程加载安全配置完成");
                    }

                    RegistorInterface();
                    //sw.Stop();
                }
            };
            mSecurityRunner.Start();
            mDriver.Start(realEnginer);
        }
            public void GetServerType_returns_correct_ServerType_for_real_test_database()
            {
                using (var context = new RealDatabase())
                {
                    context.Database.CreateIfNotExists();

                    var connection = context.Database.Connection;
                    connection.Open();

                    var expectedServerType = DatabaseTestHelpers.IsSqlAzure(connection.ConnectionString) ? ServerType.Cloud : ServerType.OnPremises;
                    Assert.Equal(expectedServerType, SqlVersionUtils.GetServerType(connection));

                    connection.Close();
                }
            }