コード例 #1
0
        private int GetVersionTableNumber(string databaseInfo, bool isDesktop)
        {
            if (isDesktop)
            {
                return(0);
            }

            int version = 0;

            using (IRepository repository = RepoHelper.CreateRepository(databaseInfo))
            {
                var list = repository.GetAllTableNames();
                if (list.Contains("__VERSION"))
                {
                    System.Data.DataSet ds = repository.ExecuteSql(@"
                                SELECT MAX([SchemaVersion]) FROM __VERSION;
                                GO");
                    if (ds != null && ds.Tables.Count > 0)
                    {
                        version = int.Parse(ds.Tables[0].Rows[0][0].ToString());
                    }

                    repository.ExecuteSql(@"
                                DROP TABLE [__VERSION];
                                GO");
                }
            }

            return(version);
        }
コード例 #2
0
        public async Task <bool> Handle(AsyncExchangeRateCommand request, CancellationToken cancellationToken)
        {
            Rates RatesInfo = null;

            using (WebClient web = new WebClient())
            {
                RatesInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <Rates>(web.DownloadString("https://api.exchangerate-api.com/v4/latest/USD"));
            }
            try
            {
                _exchangeRateRepository.ExecuteSql("delete from ExchangeRate where 1 = 1  ");
                foreach (var r in RatesInfo.rates)
                {
                    var rate = new ExchangeRate {
                        CurrencyCode = r.Key, ToUSD = r.Value
                    };
                    _exchangeRateRepository.Add(rate);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(await _unitOfWork.CommitAsync());
        }
コード例 #3
0
        public List <DbDescription> GetDescriptions(DatabaseInfo databaseInfo)
        {
            var list = new List <DbDescription>();

            using (IRepository repo = DataConnectionHelper.CreateRepository(databaseInfo))
            {
                var tlist = repo.GetAllTableNames();
                if (tlist.Contains(TableName))
                {
                    var ds = repo.ExecuteSql(SelectScript);
                    if (ds.Tables.Count > 0)
                    {
                        foreach (DataRow row in ds.Tables[0].Rows)
                        {
                            var dbDesc = new DbDescription();
                            dbDesc.Object      = row[0] == DBNull.Value ? null : row[0].ToString();
                            dbDesc.Parent      = row[1] == DBNull.Value ? null : row[1].ToString();
                            dbDesc.Description = row[2] == DBNull.Value ? null : row[2].ToString();
                            list.Add(dbDesc);
                        }
                    }
                }
            }
            return(list);
        }
コード例 #4
0
ファイル: BaseApp.cs プロジェクト: cityjoy/CareerCRM
        /// <summary>
        /// 使用sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public virtual int ExecuteSqlWithNonQuery(string sql)
        {
            int result = 0;

            result = Repository.ExecuteSql(sql);
            return(result);
        }
コード例 #5
0
        private static string CreateStore(DatabaseType storeDbType)
        {
            string fileName   = GetStoreName(storeDbType);
            string connString = string.Format("Data Source={0};", fileName);

            if (!File.Exists(fileName))
            {
                if (storeDbType == DatabaseType.SQLite)
                {
                    var helper = RepositoryHelper.CreateEngineHelper(storeDbType);
                    helper.CreateDatabase(connString);
                }
                else
                {
                    var sdf = Resources.SqlCe35AddinStore;
                    if (storeDbType == DatabaseType.SQLCE40)
                    {
                        sdf = Resources.SqlCe40AddinStore;
                    }
                    using (Stream stream = new MemoryStream(sdf))
                    {
                        // Create a FileStream object to write a stream to a file
                        using (FileStream fileStream = File.Create(fileName, (int)stream.Length))
                        {
                            // Fill the bytes[] array with the stream data
                            byte[] bytesInStream = new byte[stream.Length];
                            stream.Read(bytesInStream, 0, bytesInStream.Length);
                            // Use FileStream object to write to the specified file
                            fileStream.Write(bytesInStream, 0, bytesInStream.Length);
                        }
                    }
                }
            }

            var dbInfo = new DatabaseInfo {
                DatabaseType = storeDbType, ConnectionString = connString
            };

            using (IRepository repository = Helpers.RepositoryHelper.CreateRepository(dbInfo))
            {
                var tables = repository.GetAllTableNames();
                if (!tables.Contains("Databases"))
                {
                    var script =
                        "CREATE TABLE Databases (Id INT IDENTITY, Source nvarchar(2048) NOT NULL, FileName nvarchar(512) NOT NULL, CeVersion int NOT NULL)" +
                        separator;
                    if (storeDbType == DatabaseType.SQLite)
                    {
                        script =
                            "CREATE TABLE Databases (Id INTEGER PRIMARY KEY, Source nvarchar(2048) NOT NULL, FileName nvarchar(512) NOT NULL, CeVersion int NOT NULL)" +
                            separator;
                    }
                    repository.ExecuteSql(script);
                }
            }
            return(connString);
        }
コード例 #6
0
        private static void CreateExtPropsTable(IRepository repo)
        {
            var list = repo.GetAllTableNames();

            if (!list.Contains(TableName))
            {
                repo.ExecuteSql(CreateScript);
            }
        }
コード例 #7
0
        private async Task SaveNewCategories(IEnumerable <AppCategoryModel> newCategories)
        {
            //ef can manage many to many relationships only when changes are tracked, we don't track changes, so drop to raw sql
            var insertCategoriesSQL    = @"INSERT INTO [AppCategories] (Name) VALUES({0})";
            var insertAppCategoriesSQL = @"INSERT INTO [ApplicationCategories] VALUES({0},{1})";

            foreach (var cat in newCategories)
            {
                await repository.ExecuteSql(insertCategoriesSQL, cat.Name);

                var newCat = await repository.GetSingleAsync <AppCategory>(c => c.Name == cat.Name);

                foreach (var app in cat.ObservableApplications)
                {
                    await repository.ExecuteSql(insertAppCategoriesSQL, app.ApplicationID, newCat.ID);
                }
            }
        }
コード例 #8
0
        public void ReportTableData(object sender, ExecutedRoutedEventArgs e)
        {
            string sqlText;
            var    menuItem = sender as MenuItem;
            var    ds       = new DataSet();

            if (menuItem == null)
            {
                return;
            }
            var menuInfo = menuItem.CommandParameter as MenuCommandParameters;

            if (menuInfo == null)
            {
                return;
            }
            try
            {
                using (IRepository repository = DataConnectionHelper.CreateRepository(menuInfo.DatabaseInfo))
                {
                    sqlText = string.Format(Environment.NewLine + "SELECT * FROM [{0}]", menuInfo.Name)
                              + Environment.NewLine + "GO";
                    ds = repository.ExecuteSql(sqlText);
                }
                var pkg = ParentWindow.Package as SqlCeToolboxPackage;
                Debug.Assert(pkg != null, "Package property of the Explorere Tool Window should never be null, have you tried to create it manually and not through FindToolWindow()?");

                string dbName = System.IO.Path.GetFileNameWithoutExtension(menuInfo.DatabaseInfo.Caption);
                if (dbName != null)
                {
                    var window = pkg.CreateWindow <ReportWindow>(Math.Abs(menuInfo.Name.GetHashCode() - dbName.GetHashCode()));
                    window.Caption = menuInfo.Name + " (" + dbName + ")";
                    pkg.ShowWindow(window);

                    var control = window.Content as ReportControl;
                    if (control != null)
                    {
                        control.DatabaseInfo = menuInfo.DatabaseInfo;
                        control.TableName    = menuInfo.Name;
                        control.DataSet      = ds;
                        control.ShowReport();
                    }
                }
                DataConnectionHelper.LogUsage("ViewReport");
            }
            catch (System.IO.FileNotFoundException)
            {
                EnvDteHelper.ShowError("Microsoft Report Viewer 2010 not installed, please download and install to use this feature  http://www.microsoft.com/en-us/download/details.aspx?id=6442");
                return;
            }
            catch (Exception ex)
            {
                DataConnectionHelper.SendError(ex, menuInfo.DatabaseInfo.DatabaseType, false);
            }
            ds.Dispose();
        }
コード例 #9
0
        private void UpdateDescription(string description, string parentName, string objectName, DatabaseInfo databaseInfo)
        {
            if (string.IsNullOrWhiteSpace(description))
            {
                return;
            }

            description = description.Replace("'", "''");
            using (IRepository repo = DataConnectionHelper.CreateRepository(databaseInfo))
            {
                string where = (objectName == null ? "[ObjectName] IS NULL AND " : "[ObjectName] = '" + objectName + "' AND");
                where       += (parentName == null ? "[ParentName] IS NULL AND [Type] = 0" : "[ParentName] = '" + parentName + "' AND [Type] = 0");
                repo.ExecuteSql(string.Format(UpdateScript, description, where));
            }
        }
コード例 #10
0
        /// <summary>
        /// This will only be called if the caller (the tree list) knows that the table exists
        /// </summary>
        /// <param name="databaseInfo"></param>
        /// <returns></returns>
        private string GetDescription(string parentName, string objectName, string connectionString)
        {
            string res = string.Empty;

            using (IRepository repo = RepoHelper.CreateRepository(connectionString))
            {
                string where = (objectName == null ? "[ObjectName] IS NULL" : "[ObjectName] = '" + objectName + "' AND");
                where       += (parentName == null ? "[ParentName] IS NULL" : "[ParentName] = '" + parentName + "' AND [Type] = 0");
                var ds = repo.ExecuteSql(string.Format(selectSingleScript, where));
                if (ds.Tables.Count > 0)
                {
                    return(ds.Tables[0].Rows[0][0].ToString());
                }
            }
            return(res);
        }
コード例 #11
0
        internal static Dictionary <string, DatabaseInfo> GetOwnDataConnections()
        {
            Dictionary <string, DatabaseInfo> databaseList = new Dictionary <string, DatabaseInfo>();
            DatabaseType dbType = GetPreferredDatabaseType();
            DatabaseInfo dbInfo = new DatabaseInfo {
                ConnectionString = CreateStore(dbType), DatabaseType = dbType
            };

            using (IRepository repository = CreateRepository(dbInfo))
            {
                string script  = "SELECT FileName, Source, CeVersion FROM Databases" + separator;
                var    dataset = repository.ExecuteSql(script);
                foreach (DataRow row in dataset.Tables[0].Rows)
                {
                    string       key  = row[1].ToString();
                    DatabaseType type = (DatabaseType)int.Parse(row[2].ToString());
                    var          info = new DatabaseInfo();
                    try
                    {
                        info.Caption = Path.GetFileName(row[0].ToString());
                    }
                    catch (ArgumentException)
                    {
                        info.Caption = row[0].ToString();
                    }
                    info.DatabaseType       = type;
                    info.FromServerExplorer = false;
                    info.ConnectionString   = key;
                    info.ServerVersion      = "4.0.0.0";
                    if (type == DatabaseType.SQLCE35)
                    {
                        info.ServerVersion = "3.5.1.0";
                    }
                    if (type == DatabaseType.SQLite)
                    {
                        //TODO Update this when SQLite provider is updated!
                        info.ServerVersion = "3.15";
                    }
                    info.FileIsMissing = IsMissing(info);
                    if (!databaseList.ContainsKey(key))
                    {
                        databaseList.Add(key, info);
                    }
                }
            }
            return(databaseList);
        }
コード例 #12
0
        private void AddDescription(string description, string parentName, string objectName, DatabaseInfo databaseInfo)
        {
            if (string.IsNullOrWhiteSpace(description))
            {
                return;
            }

            using (IRepository repo = DataConnectionHelper.CreateRepository(databaseInfo))
            {
                CreateExtPropsTable(repo);
                string sql = string.Format(InsertScript,
                                           (parentName == null ? "NULL" : "'" + parentName + "'"),
                                           (objectName == null ? "NULL" : "'" + objectName + "'"),
                                           description.Replace("'", "''"));
                repo.ExecuteSql(sql);
            }
        }
コード例 #13
0
 private static void AddRowVersionColumns(DatabaseMenuCommandParameters databaseInfo)
 {
     using (IRepository repository = RepoHelper.CreateRepository(databaseInfo.Connectionstring))
     {
         var list       = repository.GetAllTableNames();
         var allColumns = repository.GetAllColumns();
         foreach (var table in list)
         {
             if (!table.StartsWith("__"))
             {
                 var rowVersionCol = allColumns.Where(c => c.TableName == table && c.DataType == "rowversion").SingleOrDefault();
                 if (rowVersionCol == null)
                 {
                     repository.ExecuteSql(string.Format("ALTER TABLE {0} ADD COLUMN VersionColumn rowversion NOT NULL;{1}GO", table, Environment.NewLine));
                 }
             }
         }
     }
 }
コード例 #14
0
 public List<DbDescription> GetDescriptions(IRepository repository)
 {
     var list = new List<DbDescription>();
     string res = string.Empty;
     var tlist = repository.GetAllTableNames();
     if (tlist.Contains(tableName))
     {
         var ds = repository.ExecuteSql(selectScript);
         if (ds.Tables.Count > 0)
         {
             foreach (DataRow row in ds.Tables[0].Rows)
             {
                 var dbDesc = new DbDescription();
                 dbDesc.Object = row[0] == DBNull.Value ? null : row[0].ToString();
                 dbDesc.Parent = row[1] == DBNull.Value ? null : row[1].ToString();
                 dbDesc.Description = row[2] == DBNull.Value ? null : row[2].ToString();
                 list.Add(dbDesc);
             }
         }
     }
     return list;
 }
コード例 #15
0
        public ApiResponse <UserModel> GetUsersFromRepository(int?userId)
        {
            var response = new ApiResponse <UserModel>();

            try
            {
                object[] paramList =
                {
                    new SqlParameter("UserId", (object)userId ?? DBNull.Value),
                };

                var result = _repository.ExecuteSql <UserModel>("usp_UserMaster_GetUsersFromRepository", paramList).ToList();
                response.Data    = result;
                response.Success = true;
            }
            catch (Exception ex)
            {
                response.Message.Add(ex.Message);
            }

            return(response);
        }
コード例 #16
0
ファイル: DescriptionHelper.cs プロジェクト: herohut/elab
        public List <DbDescription> GetDescriptions(IRepository repository)
        {
            var    list  = new List <DbDescription>();
            string res   = string.Empty;
            var    tlist = repository.GetAllTableNames();

            if (tlist.Contains(tableName))
            {
                var ds = repository.ExecuteSql(selectScript);
                if (ds.Tables.Count > 0)
                {
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        var dbDesc = new DbDescription();
                        dbDesc.Object      = row[0] == DBNull.Value ? null : row[0].ToString();
                        dbDesc.Parent      = row[1] == DBNull.Value ? null : row[1].ToString();
                        dbDesc.Description = row[2] == DBNull.Value ? null : row[2].ToString();
                        list.Add(dbDesc);
                    }
                }
            }
            return(list);
        }
コード例 #17
0
 /// <summary>
 /// 执行Sql语句
 /// </summary>
 /// <param name="sql">Sql语句</param>
 public int ExecuteSql(string sql)
 {
     return(Service.ExecuteSql(sql));
 }
コード例 #18
0
        public void GenerateDataContext(object sender, ExecutedRoutedEventArgs e)
        {
            var databaseInfo = ValidateMenuInfo(sender);

            if (databaseInfo == null)
            {
                return;
            }

            bool isDesktop = false;

            if ((bool)((MenuItem)sender).Tag == true)
            {
                isDesktop = true;
            }

            SqlCeHelper helper = new SqlCeHelper();

            if (!helper.IsV35DbProviderInstalled())
            {
                MessageBox.Show("This feature requires the SQL Server Compact 3.5 SP2 runtime & DbProvider to be installed");
                return;
            }

            string sqlMetalPath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools", "InstallationFolder", null);

            if (string.IsNullOrEmpty(sqlMetalPath))
            {
                sqlMetalPath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A", "InstallationFolder", string.Empty) + "bin\\NETFX 4.0 Tools\\";
                if (string.IsNullOrEmpty(sqlMetalPath))
                {
                    MessageBox.Show("Could not find SQLMetal location in registry");
                    return;
                }
            }
            sqlMetalPath = Path.Combine(sqlMetalPath, "sqlmetal.exe");
            if (!File.Exists(sqlMetalPath))
            {
                MessageBox.Show("Could not find SqlMetal in the expected location: " + sqlMetalPath);
                return;
            }
            string sdfFileName = string.Empty;

            string fileName = string.Empty;

            SaveFileDialog fd = new SaveFileDialog();

            fd.Title           = "Save Data Context as";
            fd.Filter          = "C# code (*.cs)|*.cs|VB code|*.vb";
            fd.OverwritePrompt = true;
            fd.ValidateNames   = true;
            bool?fdresult = fd.ShowDialog();

            if (fdresult.HasValue && fdresult.Value == true)
            {
                fileName = fd.FileName;
            }
            if (string.IsNullOrEmpty(fileName))
            {
                return;
            }

            try
            {
                using (IRepository repository = RepoHelper.CreateRepository(databaseInfo.Connectionstring))
                {
                    var    tables        = repository.GetAllTableNames();
                    var    pks           = repository.GetAllPrimaryKeys();
                    string checkedTables = string.Empty;
                    foreach (string tableName in tables)
                    {
                        var pk = pks.Where(k => k.TableName == tableName).FirstOrDefault();
                        if (pk.TableName == null)
                        {
                            checkedTables += tableName + Environment.NewLine;
                        }
                    }
                    if (!string.IsNullOrEmpty(checkedTables))
                    {
                        string message = string.Format("The tables below do not have Primary Keys defined,{0}and will not be generated properly:{1}{2}", Environment.NewLine, Environment.NewLine, checkedTables);
                        MessageBox.Show(message);
                    }
                    List <KeyValuePair <string, string> > dbInfo = repository.GetDatabaseInfo();
                    foreach (var kvp in dbInfo)
                    {
                        if (kvp.Key == "Database")
                        {
                            sdfFileName = kvp.Value;
                            break;
                        }
                    }
                    sdfFileName = Path.GetFileName(sdfFileName);
                }

                string model = Path.GetFileNameWithoutExtension(databaseInfo.Caption).Replace(" ", string.Empty).Replace("#", string.Empty).Replace(".", string.Empty).Replace("-", string.Empty);
                model = model + "Context";
                DataContextDialog dcDialog = new DataContextDialog();
                dcDialog.ModelName    = model;
                dcDialog.IsDesktop    = isDesktop;
                dcDialog.NameSpace    = string.Empty;
                dcDialog.CodeLanguage = "C#";
                bool?result = dcDialog.ShowDialog();
                if (result.HasValue && result.Value == true && (!string.IsNullOrWhiteSpace(dcDialog.ModelName)))
                {
                    if (dcDialog.AddRowversionColumns)
                    {
                        AddRowVersionColumns(databaseInfo);
                    }

                    string sdfPath = databaseInfo.Connectionstring;

#if V35
#else
                    //If version 4.0, create a 3.5 schema sdf, and use that as connection string
                    if (isDesktop)
                    {
                        var tempFile = Path.GetTempFileName();
                        using (IRepository repository = RepoHelper.CreateRepository(databaseInfo.Connectionstring))
                        {
                            var generator = RepoHelper.CreateGenerator(repository, tempFile);
                            generator.ScriptDatabaseToFile(Scope.Schema);
                        }
                        sdfPath = Path.Combine(Path.GetTempPath(), sdfFileName);
                        if (File.Exists(sdfPath))
                        {
                            File.Delete(sdfPath);
                        }
                        sdfPath = "Data Source=" + sdfPath;

                        helper.CreateDatabase(sdfPath);
                        using (IRepository repository = new DBRepository(sdfPath))
                        {
                            string script = File.ReadAllText(tempFile);
                            repository.ExecuteSql(script);
                        }
                    }
#endif
                    int versionNumber = GetVersionTableNumber(databaseInfo.Connectionstring, isDesktop);

                    model = dcDialog.ModelName;
                    string dcPath     = fileName;
                    string parameters = " /provider:SQLCompact /code:\"" + dcPath + "\"";
                    parameters += " /conn:\"" + sdfPath + "\"";
                    parameters += " /context:" + model;
                    if (dcDialog.Pluralize)
                    {
                        parameters += " /pluralize";
                    }
                    if (!string.IsNullOrWhiteSpace(dcDialog.NameSpace))
                    {
                        parameters += " /namespace:" + dcDialog.NameSpace;
                    }
                    var dcH = new ErikEJ.SqlCeScripting.DataContextHelper();

                    string sqlmetalResult = dcH.RunSqlMetal(sqlMetalPath, parameters);

                    if (!File.Exists(dcPath))
                    {
                        MessageBox.Show("Error during SQL Metal run: " + sqlmetalResult);
                        return;
                    }

                    if (!isDesktop)
                    {
                        using (IRepository repository = RepoHelper.CreateRepository(databaseInfo.Connectionstring))
                        {
                            if (dcDialog.CodeLanguage == "VB")
                            {
                                DataContextHelper.FixDataContextVB(dcPath, model, dcDialog.NameSpace, sdfFileName, repository);
                            }
                            else
                            {
                                DataContextHelper.FixDataContextCS(dcPath, model, dcDialog.NameSpace, sdfFileName, repository);
                            }
                        }
                    }

                    // Creates __Version table and adds one row if desired
                    if (!isDesktop && dcDialog.AddVersionTable)
                    {
                        using (IRepository repository = RepoHelper.CreateRepository(databaseInfo.Connectionstring))
                        {
                            var list = repository.GetAllTableNames();
                            if (!list.Contains("__VERSION"))
                            {
                                repository.ExecuteSql(string.Format(@"
                                CREATE TABLE [__VERSION] (
                                  [SchemaVersion] int NOT NULL
                                , [DateUpdated] datetime NOT NULL DEFAULT (GETDATE())
                                );
                                GO
                                CREATE INDEX [IX_SchemaVersion] ON [__VERSION] ([SchemaVersion] DESC);
                                GO
                                INSERT INTO [__VERSION] ([SchemaVersion]) VALUES ({0});
                                GO", versionNumber));
                            }
                        }
                    }
                    MessageBox.Show("DataContext class successfully created");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(Helpers.DataConnectionHelper.ShowErrors(ex));
            }
        }
コード例 #19
0
 public void ExecuteSql(string sql) => _commonRepository.ExecuteSql(sql);
コード例 #20
0
        public void DistributedTransaction()
        {
            //失败事务
            IRepository _db1 = DbFactory.GetRepository("DataSource=db.db", DatabaseType.SQLite);
            IRepository _db2 = DbFactory.GetRepository("DataSource=db2.db", DatabaseType.SQLite);

            _db1.DeleteAll <Base_UnitTest>();
            _db2.DeleteAll <Base_UnitTest>();
            Base_UnitTest data1 = new Base_UnitTest
            {
                Id       = Guid.NewGuid().ToString(),
                UserId   = "1",
                UserName = Guid.NewGuid().ToString()
            };
            Base_UnitTest data2 = new Base_UnitTest
            {
                Id       = data1.Id,
                UserId   = "1",
                UserName = Guid.NewGuid().ToString()
            };
            Base_UnitTest data3 = new Base_UnitTest
            {
                Id       = Guid.NewGuid().ToString(),
                UserId   = "2",
                UserName = Guid.NewGuid().ToString()
            };

            new Action(() =>
            {
                var transaction = DistributedTransactionFactory.GetDistributedTransaction();
                transaction.AddRepository(_db1, _db2);
                var succcess = transaction.RunTransaction(() =>
                {
                    _db1.ExecuteSql("insert into Base_UnitTest(Id) values('10') ");
                    _db1.Insert(data1);
                    _db1.Insert(data2);
                    _db2.Insert(data1);
                    _db2.Insert(data3);
                });
                Assert.IsFalse(succcess.Success);
                Assert.AreEqual(0, _db1.GetIQueryable <Base_UnitTest>().Count());
                Assert.AreEqual(0, _db2.GetIQueryable <Base_UnitTest>().Count());
            })();

            //成功事务
            new Action(() =>
            {
                var transaction = DistributedTransactionFactory.GetDistributedTransaction();
                transaction.AddRepository(_db1, _db2);

                var succcess = transaction
                               .RunTransaction(() =>
                {
                    _db1.ExecuteSql("insert into Base_UnitTest(Id) values('10') ");
                    _db1.Insert(data1);
                    _db1.Insert(data3);
                    _db2.Insert(data1);
                    _db2.Insert(data3);
                });
                int count1 = _db1.GetIQueryable <Base_UnitTest>().Count();
                int count2 = _db2.GetIQueryable <Base_UnitTest>().Count();
                Assert.IsTrue(succcess.Success);
                Assert.AreEqual(3, count1);
                Assert.AreEqual(2, count2);
            })();
        }
コード例 #21
0
 private static void CreateExtPropsTable(IRepository repo)
 {
     var list = repo.GetAllTableNames();
     if (!list.Contains(tableName))
         repo.ExecuteSql(createScript);
 }
コード例 #22
0
        public void DistributedTransactionTest()
        {
            //失败事务
            IRepository _bus1 = DbFactory.GetRepository();
            IRepository _bus2 = DbFactory.GetRepository("BaseDb_Test");

            _bus1.DeleteAll <Base_UnitTest>();
            _bus2.DeleteAll <Base_UnitTest>();
            Base_UnitTest data1 = new Base_UnitTest
            {
                Id       = Guid.NewGuid().ToString(),
                UserId   = "1",
                UserName = Guid.NewGuid().ToString()
            };
            Base_UnitTest data2 = new Base_UnitTest
            {
                Id       = data1.Id,
                UserId   = "1",
                UserName = Guid.NewGuid().ToString()
            };
            Base_UnitTest data3 = new Base_UnitTest
            {
                Id       = Guid.NewGuid().ToString(),
                UserId   = "2",
                UserName = Guid.NewGuid().ToString()
            };

            new Action(() =>
            {
                var succcess = DistributedTransactionFactory.GetDistributedTransaction(_bus1, _bus2)
                               .RunTransaction(() =>
                {
                    _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') ");
                    _bus1.Insert(data1);
                    _bus1.Insert(data2);
                    _bus2.Insert(data1);
                    _bus2.Insert(data3);
                });
                Assert.AreEqual(succcess.Success, false);
                Assert.AreEqual(_bus1.GetIQueryable <Base_UnitTest>().Count(), 0);
                Assert.AreEqual(_bus2.GetIQueryable <Base_UnitTest>().Count(), 0);
            })();

            //成功事务
            new Action(() =>
            {
                var succcess = DistributedTransactionFactory.GetDistributedTransaction(_bus1, _bus2)
                               .RunTransaction(() =>
                {
                    _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') ");
                    _bus1.Insert(data1);
                    _bus1.Insert(data3);
                    _bus2.Insert(data1);
                    _bus2.Insert(data3);
                });
                int count1 = _bus1.GetIQueryable <Base_UnitTest>().Count();
                int count2 = _bus2.GetIQueryable <Base_UnitTest>().Count();
                Assert.AreEqual(succcess.Success, true);
                Assert.AreEqual(count1, 3);
                Assert.AreEqual(count2, 2);
            })();
        }
コード例 #23
0
 /// <summary>
 /// 执行Sql语句
 /// </summary>
 /// <param name="sql">Sql语句</param>
 public void ExecuteSql(string sql)
 {
     Service.ExecuteSql(sql);
 }
コード例 #24
0
        public void SpawnReportViewerWindow(object sender, ExecutedRoutedEventArgs e)
        {
            try
            {
                var menuItem = sender as MenuItem;
                if (menuItem == null)
                {
                    return;
                }
                var menuInfo = menuItem.CommandParameter as MenuCommandParameters;
                if (menuInfo == null)
                {
                    return;
                }

                WindowsFormsHost wh = new WindowsFormsHost();
                ReportGrid       rg = new ReportGrid();

                DataSet ds;

                using (IRepository repository = RepoHelper.CreateRepository(menuInfo.Connectionstring))
                {
                    var generator = RepoHelper.CreateGenerator(repository);
                    generator.GenerateTableSelect(menuInfo.Name);
                    var sqlText = generator.GeneratedScript;
                    ds = repository.ExecuteSql(sqlText);
                }
                rg.DataSet   = ds;
                rg.TableName = menuInfo.Name;
                wh.Child     = rg;

                string tabTitle     = System.IO.Path.GetFileNameWithoutExtension(menuInfo.Caption) + "-" + menuInfo.Name + "-Report";
                bool   alreadyThere = false;
                int    i            = -1;
                foreach (var item in _parent.FabTab.Items)
                {
                    i++;
                    if (item is FabTabItem)
                    {
                        FabTabItem ftItem = (FabTabItem)item;
                        if (ftItem.Header.ToString() == tabTitle)
                        {
                            alreadyThere = true;
                        }
                    }
                }
                if (alreadyThere)
                {
                    _parent.FabTab.SelectedIndex = i;
                    _parent.FabTab.Focus();
                }
                else
                {
                    FabTabItem tab = new FabTabItem();
                    tab.Content = wh;
                    tab.Header  = tabTitle;
                    _parent.FabTab.Items.Add(tab);
                    _parent.FabTab.SelectedIndex = _parent.FabTab.Items.Count - 1;
                    rg.Focus();
                }
            }
            catch (System.IO.FileNotFoundException)
            {
                MessageBox.Show("Microsoft Report Viewer 2010 not installed, please download and install to use this feature  http://www.microsoft.com/en-us/download/details.aspx?id=6442");
            }
            catch (Exception ex)
            {
                MessageBox.Show(DataConnectionHelper.ShowErrors(ex));
            }
        }