Beispiel #1
6
        private void FormMain_Load(object sender, EventArgs e)
        {
            splashScreenManager1.ShowWaitForm();
            var connectionString = ConfigurationManager.ConnectionStrings["MasterDbContext"].ConnectionString;

            var mapper = new ModelToTableMapper<LineStatus>();
            mapper.AddMapping(c => c.NameLine, "NameLine");

            tableDependency = new SqlTableDependency<LineStatus>(connectionString, "LineStatus", mapper);

            tableDependency.OnStatusChanged += TableDependency_OnStatusChanged;
            tableDependency.OnChanged += TableDependency_Changed;
            tableDependency.OnError += TableDependency_OnError;
            tableDependency.Start();
            splashScreenManager1.CloseWaitForm();
        }
        private ModelToTableMapper <T> CreateModelToTableMapperHelper()
        {
            var modelPropertyInfosWithColumnAttribute = typeof(T)
                                                        .GetProperties(BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public)
                                                        .Where(x => CustomAttributeExtensions.IsDefined(x, typeof(ColumnAttribute), false))
                                                        .ToArray();

            if (!modelPropertyInfosWithColumnAttribute.Any())
            {
                return(null);
            }

            var mapper = new ModelToTableMapper <T>();

            foreach (var propertyInfo in modelPropertyInfosWithColumnAttribute)
            {
                var attribute    = propertyInfo.GetCustomAttribute(typeof(ColumnAttribute));
                var dbColumnName = ((ColumnAttribute)attribute)?.Name;
                if (string.IsNullOrWhiteSpace(dbColumnName))
                {
                    dbColumnName = propertyInfo.Name;
                    mapper.AddMapping(propertyInfo, dbColumnName);
                }

                mapper.AddMapping(propertyInfo, dbColumnName);
            }

            return(mapper);
        }
Beispiel #3
0
        public void UpdateOneInterestedColumn()
        {
            SqlTableDependency <ABCTableModel> tableDependency = null;
            string naming = null;

            try
            {
                var mapper = new ModelToTableMapper <ABCTableModel>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second NAME");

                tableDependency            = new SqlTableDependency <ABCTableModel>(_connectionString, TableName, mapper);
                tableDependency.OnChanged += TableDependency_Changed1;
                tableDependency.Start();
                naming = tableDependency.DataBaseObjectsNamingConvention;

                Thread.Sleep(5000);

                var t = new Task(ModifyTableContent1);
                t.Start();
                t.Wait(20000);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual(_counter1, 2);
            Assert.AreEqual(_checkValues1[0].Item2.Name, _checkValues1[0].Item1.Name);
            Assert.AreEqual(_checkValues1[0].Item2.Surname, _checkValues1[0].Item1.Surname);
            Assert.AreEqual(_checkValues1[1].Item2.Name, _checkValues1[1].Item1.Name);
            Assert.AreEqual(_checkValues1[1].Item2.Surname, _checkValues1[1].Item1.Surname);
            Assert.IsTrue(SqlServerHelper.AreAllDbObjectDisposed(_connectionString, naming));
        }
Beispiel #4
0
        public void EventForAllColumnsTest()
        {
            SqlTableDependency <TransactionTestSqlServer4Model> tableDependency = null;
            string naming;

            try
            {
                var mapper = new ModelToTableMapper <TransactionTestSqlServer4Model>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

                tableDependency            = new SqlTableDependency <TransactionTestSqlServer4Model>(ConnectionStringForTestUser, TableName, mapper);
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start();
                naming = tableDependency.DataBaseObjectsNamingConvention;

                Thread.Sleep(500);

                var t = new Task(ModifyTableContent);
                t.Start();

                Thread.Sleep(1000 * 60 * 1);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual(_counter, 0);
            Assert.IsTrue(base.AreAllDbObjectDisposed(naming));
            Assert.IsTrue(base.CountConversationEndpoints(naming) == 0);
        }
        public void Test()
        {
            var mapper = new ModelToTableMapper <DatabaseObjectAutoCleanUpAfter2InsertsTestSqlServerModel>();

            mapper.AddMapping(c => c.Name, "First Name").AddMapping(c => c.Surname, "Second Name");

            var tableDependency = new SqlTableDependency <DatabaseObjectAutoCleanUpAfter2InsertsTestSqlServerModel>(ConnectionStringForTestUser, includeOldValues: true, tableName: TableName, mapper: mapper);

            tableDependency.OnChanged += TableDependency_OnChanged;
            tableDependency.Start();
            var dbObjectsNaming = tableDependency.DataBaseObjectsNamingConvention;

            Thread.Sleep(500);

            tableDependency.StopWithoutDisposing();

            Thread.Sleep(500);

            var t = new Task(ModifyTableContent);

            t.Start();

            Thread.Sleep(1000 * 60 * 4);

            Assert.IsTrue(base.AreAllDbObjectDisposed(dbObjectsNaming));
            Assert.IsTrue(base.CountConversationEndpoints(dbObjectsNaming) == 0);
        }
Beispiel #6
0
        private static void Main()
        {
            // Get Connection string
            var connectionString = ConfigurationManager.ConnectionStrings["SqlServer2008 Test_User"].ConnectionString;

            // Because our model has a property that does not match table column name, we need a mapper C# Model PROPERTY <--> Database Table Column Name
            var mapper = new ModelToTableMapper <Product>();

            mapper.AddMapping(c => c.ItemsInStock, "Quantity");

            // Define WHERE filter specifing the WHERE condition
            // We also pass the mapper defined above as last contructor's parameter
            Expression <Func <Product, bool> > expression     = p => (p.CategoryId == (int)CategorysEnum.Food || p.CategoryId == (int)CategorysEnum.Drink) && p.ItemsInStock <= 10;
            ITableDependencyFilter             whereCondition = new SqlTableDependencyFilter <Product>(expression, mapper);

            // Create SqlTableDependency and pass filter condition, as weel as mapper
            using (var dep = new SqlTableDependency <Product>(connectionString, "Products", mapper: mapper, filter: whereCondition))
            {
                dep.OnChanged += Changed;
                dep.OnError   += OnError;
                dep.Start();

                Console.WriteLine("TableDependency, SqlTableDependency, SqlTableDependencyFilter");
                Console.WriteLine("Copyright (c) 2015-2018 Christian Del Bianco.");
                Console.WriteLine("All rights reserved." + Environment.NewLine);
                Console.WriteLine();
                Console.WriteLine("Waiting for receiving notifications...");
                Console.WriteLine("Press a key to stop");
                Console.ReadKey();
            }
        }
        public static IModelToTableMapper <T> GetModelMapperFromColumnDataAnnotation(IEnumerable <TableColumnInfo> tableColumns)
        {
            var modelPropertyInfosWithColumnAttribute = typeof(T)
                                                        .GetProperties(BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public)
                                                        .Where(x => CustomAttributeExtensions.IsDefined((MemberInfo)x, typeof(ColumnAttribute), false))
                                                        .ToArray();

            if (!modelPropertyInfosWithColumnAttribute.Any())
            {
                return(null);
            }

            var mapper = new ModelToTableMapper <T>();

            foreach (var propertyInfo in modelPropertyInfosWithColumnAttribute)
            {
                var attribute    = propertyInfo.GetCustomAttribute(typeof(ColumnAttribute));
                var dbColumnName = ((ColumnAttribute)attribute)?.Name;
                if (string.IsNullOrWhiteSpace(dbColumnName) && tableColumns.Any(tc => tc.Name == propertyInfo.Name))
                {
                    dbColumnName = propertyInfo.Name;
                    mapper.AddMapping(propertyInfo, dbColumnName);
                    continue;
                }

                if (!string.IsNullOrWhiteSpace(dbColumnName))
                {
                    mapper.AddMapping(propertyInfo, dbColumnName);
                }
            }

            return(mapper);
        }
Beispiel #8
0
 public ListenerOrc(string connectionString, string tableName, ModelToTableMapper <LoadAndCountTestOracleModel> mapper)
 {
     this._tableDependency            = new OracleTableDependency <LoadAndCountTestOracleModel>(connectionString, tableName, mapper);
     this._tableDependency.OnChanged += this.TableDependency_OnChanged;
     this._tableDependency.Start(60, 120);
     this._listenerResult.ObjectNaming = this._tableDependency.DataBaseObjectsNamingConvention;
 }
        public void TaskCancellationTest()
        {
            string naming = null;
            OracleTableDependency <TaskCancellationTestOracleModel> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <TaskCancellationTestOracleModel>();
                mapper.AddMapping(c => c.Name, "Long Description");

                tableDependency            = new OracleTableDependency <TaskCancellationTestOracleModel>(ConnectionString, TableName, mapper);
                tableDependency.OnChanged += (sender, e) => { };
                tableDependency.Start();
                naming = tableDependency.DataBaseObjectsNamingConvention;

                Thread.Sleep(500);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            var areAllDbObjectDisposed = OracleHelper.AreAllDbObjectsDisposed(ConnectionString, naming);

            Assert.IsTrue(areAllDbObjectDisposed == true);
        }
        public void CheckTest2()
        {
            OracleTableDependency <Varchar2Model> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <Varchar2Model>();
                mapper.AddMapping(c => c.Name, "COLUMN3");

                tableDependency            = new OracleTableDependency <Varchar2Model>(ConnectionString, TableName, mapper);
                tableDependency.OnChanged += this.TableDependency_Changed;
                tableDependency.Start();
                Thread.Sleep(1000);

                var t = new Task(ModifyTableContent2);
                t.Start();
                t.Wait(2000);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual("stringa ccia", _name);
        }
Beispiel #11
0
        public void Test2()
        {
            OracleTableDependency <NullMessageContentTestOracleModel> tableDependency = null;
            string naming = null;

            try
            {
                var mapper = new ModelToTableMapper <NullMessageContentTestOracleModel>();
                mapper.AddMapping(c => c.Description, "Long Description");

                tableDependency            = new OracleTableDependency <NullMessageContentTestOracleModel>(ConnectionString, TableName, mapper);
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start();
                naming = tableDependency.DataBaseObjectsNamingConvention;
                Thread.Sleep(1000);

                var t = new Task(ModifyTableContent2);
                t.Start();
                t.Wait(5000);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.IsTrue(_id > 0);
            Assert.IsTrue(string.IsNullOrWhiteSpace(_name));
            Assert.IsTrue(string.IsNullOrWhiteSpace(_description));
            Assert.IsTrue(OracleHelper.AreAllDbObjectsDisposed(ConnectionString, naming));
        }
        public void EventForSpecificColumnsTest()
        {
            OracleTableDependency <MultiDmlOperationsTesOracleModel> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <MultiDmlOperationsTesOracleModel>();
                mapper.AddMapping(c => c.Name, "Long Description");

                tableDependency            = new OracleTableDependency <MultiDmlOperationsTesOracleModel>(ConnectionString, TableName, mapper);
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start();

                Thread.Sleep(5000);

                var t = new Task(ModifyTableContent);
                t.Start();
                t.Wait(20000);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual(_counter, 9);
            Assert.AreEqual(_deletedValue, "XXXXXX");
        }
        public void StatusTest()
        {
            try
            {
                var mapper = new ModelToTableMapper <StatusTestSqlServerModel>();
                mapper.AddMapping(c => c.Name, "FIRST name");
                mapper.AddMapping(c => c.Surname, "Second Name");
                this._tableDependency                  = new SqlTableDependency <StatusTestSqlServerModel>(ConnectionString, TableName, mapper);
                this._tableDependency.OnChanged       += this.TableDependency_Changed;
                this._tableDependency.OnStatusChanged += this.TableDependency_OnStatusChanged;

                this._tableDependency.Start();

                Thread.Sleep(1 * 60 * 1000);

                var t = new Task(ModifyTableContent);
                t.Start();
                t.Wait(20000);

                this._tableDependency.Stop();

                foreach (var status in statuses)
                {
                    Assert.IsTrue(statuses[status.Key] == true);
                }
            }
            finally
            {
                this._tableDependency?.Dispose();
            }
        }
Beispiel #14
0
        private static void Setup()
        {
            var mapper = new ModelToTableMapper <Customer>();

            mapper.AddMapping(c => c.Surname, "LastName");
            mapper.AddMapping(c => c.Name, "FirstName");

            using (var dep = new SqlTableDependency <Customer>(_con, "Customer", mapper: mapper))
            {
                dep.OnChanged += (s, e) =>
                {
                    Customer customer = e.Entity;
                    Console.WriteLine("DML Op: {0}", e.ChangeType);
                    Console.WriteLine("ID: {0}", customer.Id);
                    Console.WriteLine("First Name: {0}", customer.Name);
                    Console.WriteLine("Last Name: {0}", customer.Surname);
                    customerQue.Enqueue(customer);
                };
                dep.Start();


                Timer timer = new Timer((arg) => {
                    ProcessData();
                }, null, 0, 5000);


                Console.WriteLine("Press a key to exit");
                Console.ReadKey();



                dep.Stop();
            }
        }
Beispiel #15
0
        public void Test()
        {
            var namingToUse = "AAAMOSGTRO".ToUpper();

            var mapper = new ModelToTableMapper <TestOracleModel>();

            mapper.AddMapping(c => c.Description, "Long Description").AddMapping(c => c.Name, "NAME");

            RunFirstTime(namingToUse);
            Thread.Sleep(3 * 60 * 1010);

            using (var tableDependency = new OracleTableDependency <TestOracleModel>(ConnectionString, TableName, mapper, true, namingToUse))
            {
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start(60, 120);
                Assert.AreEqual(tableDependency.DataBaseObjectsNamingConvention, namingToUse);

                Thread.Sleep(1 * 25 * 1000);

                var t = new Task(ModifyTableContent);
                t.Start();
                t.Wait(2 * 60 * 1000);
            }

            Assert.IsTrue(OracleHelper.AreAllDbObjectsDisposed(ConnectionString, namingToUse));
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Name, _checkValues[ChangeType.Insert.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Description, _checkValues[ChangeType.Insert.ToString()].Item1.Description);
        }
        public void MultiInsertTest()
        {
            _checkValues.Clear();
            SqlTableDependency <MultiDmlOperationsTestSqlServerModel> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <MultiDmlOperationsTestSqlServerModel>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

                tableDependency            = new SqlTableDependency <MultiDmlOperationsTestSqlServerModel>(_connectionString, TableName, mapper);
                tableDependency.OnChanged += this.TableDependency_Changed;
                tableDependency.OnError   += this.TableDependency_OnError;
                tableDependency.Start();

                Thread.Sleep(10000);

                var t = new Task(MultiInsertOperation);
                t.Start();
                t.Wait(40000);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual("NONNA", _checkValues[1].Name);
            Assert.AreEqual("DIRCE", _checkValues[1].Surname);
            Assert.AreEqual("ZIA", _checkValues[0].Name);
            Assert.AreEqual("ALFREDINA", _checkValues[0].Surname);
        }
        public void Test()
        {
            SqlTableDependency <EventForAllColumnsTestSqlServerModel> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <EventForAllColumnsTestSqlServerModel>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

                tableDependency            = new SqlTableDependency <EventForAllColumnsTestSqlServerModel>(ConnectionStringForTestUser, tableName: TableName, mapper: mapper);
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start();

                var t = new Task(ModifyTableContent);
                t.Start();
                Thread.Sleep(1000 * 15 * 1);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual(_counter, 3);
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Name, _checkValues[ChangeType.Insert.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Surname, _checkValues[ChangeType.Insert.ToString()].Item1.Surname);
            Assert.AreEqual(_checkValues[ChangeType.Update.ToString()].Item2.Name, _checkValues[ChangeType.Update.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Update.ToString()].Item2.Surname, _checkValues[ChangeType.Update.ToString()].Item1.Surname);
            Assert.AreEqual(_checkValues[ChangeType.Delete.ToString()].Item2.Name, _checkValues[ChangeType.Delete.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Delete.ToString()].Item2.Surname, _checkValues[ChangeType.Delete.ToString()].Item1.Surname);

            Assert.IsTrue(base.AreAllDbObjectDisposed(tableDependency.DataBaseObjectsNamingConvention));
            Assert.IsTrue(base.CountConversationEndpoints(tableDependency.DataBaseObjectsNamingConvention) == 0);
        }
        public void MultiDeleteTest()
        {
            _checkValues.Clear();
            SqlTableDependency <MultiDmlOperationsTestSqlServerModel> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <MultiDmlOperationsTestSqlServerModel>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

                tableDependency            = new SqlTableDependency <MultiDmlOperationsTestSqlServerModel>(_connectionString, TableName, mapper);
                tableDependency.OnChanged += this.TableDependency_Changed;
                tableDependency.OnError   += this.TableDependency_OnError;
                tableDependency.Start();

                Thread.Sleep(5000);

                var t = new Task(MultiDeleteOperation);
                t.Start();
                t.Wait(20000);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual("CHRISTIAN", _checkValues[1].Name);
            Assert.AreEqual("DEL BIANCO", _checkValues[1].Surname);
            Assert.AreEqual("VELIA", _checkValues[0].Name);
            Assert.AreEqual("CECCARELLI", _checkValues[0].Surname);
        }
Beispiel #19
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            SanResturantEntities db = new SanResturantEntities();
            var li = db.SaleFoodOnline.ToList();

            DataTable      dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter("select * from SaleFoodOnline", new SqlConnection(_con));

            da.Fill(dt);

            var co = dt.Rows.Count;

            //var dep = new SqlTableDependency<SaleFoodOnline>(_con, "SaleFoodOnline");
            //dep.OnChanged += Changed;
            //dep.OnError += _dependency_OnError;
            //dep.Start();
            //btnStop.Enabled = true;

            var mapper = new ModelToTableMapper <SaleFoodOnline>();

            mapper.AddMapping(model => model.ID, "ID");
            _dependency            = new SqlTableDependency <SaleFoodOnline>(_con, "SaleFoodOnline", "dbo", mapper);
            _dependency.OnChanged += Changed;
            _dependency.OnError   += _dependency_OnError;
            _dependency.Start();
        }
Beispiel #20
0
        public void EventForAllColumnsTest()
        {
            SqlTableDependency <EventForAllColumnsTestSqlServerModel> tableDependency = null;
            string naming = null;

            try
            {
                var mapper = new ModelToTableMapper <EventForAllColumnsTestSqlServerModel>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

                tableDependency            = new SqlTableDependency <EventForAllColumnsTestSqlServerModel>(_connectionString, TableName, mapper);
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start();
                naming = tableDependency.DataBaseObjectsNamingConvention;

                Thread.Sleep(5000);

                var t = new Task(ModifyTableContent);
                t.Start();
                t.Wait(20000);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual(_counter, 3);
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Name, _checkValues[ChangeType.Insert.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Surname, _checkValues[ChangeType.Insert.ToString()].Item1.Surname);
            Assert.AreEqual(_checkValues[ChangeType.Update.ToString()].Item2.Name, _checkValues[ChangeType.Update.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Update.ToString()].Item2.Surname, _checkValues[ChangeType.Update.ToString()].Item1.Surname);
            Assert.AreEqual(_checkValues[ChangeType.Delete.ToString()].Item2.Name, _checkValues[ChangeType.Delete.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Delete.ToString()].Item2.Surname, _checkValues[ChangeType.Delete.ToString()].Item1.Surname);
            Assert.IsTrue(SqlServerHelper.AreAllDbObjectDisposed(naming));
        }
Beispiel #21
0
        public void MultiInsertTest()
        {
            ModifiedValues.Clear();
            SqlTableDependency <MultiDmlOperationsTestSqlServerModel> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <MultiDmlOperationsTestSqlServerModel>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

                tableDependency            = new SqlTableDependency <MultiDmlOperationsTestSqlServerModel>(ConnectionStringForTestUser, tableName: TableName, mapper: mapper);
                tableDependency.OnChanged += this.TableDependency_Changed;
                tableDependency.OnError   += this.TableDependency_OnError;
                tableDependency.Start();

                var t = new Task(MultiInsertOperation);
                t.Start();
                Thread.Sleep(1000 * 5 * 1);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual(3, ModifiedValues.Count);
            Assert.IsTrue(InitialValues.Any(i => i.Equals(ModifiedValues[0])));
            Assert.IsTrue(InitialValues.Any(i => i.Equals(ModifiedValues[1])));
            Assert.IsTrue(InitialValues.Any(i => i.Equals(ModifiedValues[2])));
        }
Beispiel #22
0
        public ScrapTicker(IHubContext <ScrapHub> counterHubContext, IConfiguration configuration)
        {
            Hub            = counterHubContext;
            _configuration = configuration;

            var mapper = new ModelToTableMapper <ScrapModel>();

            mapper.AddMapping(s => s.WorkCenter, "workCenter");
            mapper.AddMapping(s => s.Qty, "qty");
            mapper.AddMapping(s => s.ScrapCode, "scrapCode");
            mapper.AddMapping(s => s.ScrapDesc, "scrapDesc");
            mapper.AddMapping(s => s.ShiftDate, "ShiftDate");
            mapper.AddMapping(s => s.Shift, "Shift");
            mapper.AddMapping(s => s.Hour, "hour_hxh");
            mapper.AddMapping(s => s.OperationNumberLocation, "operationNumberLoc");

            _tableDependency = new SqlTableDependency <ScrapModel>(
                configuration.GetConnectionString("sapConn"),
                schemaName: "dbo",
                tableName: "Scrap"
                );

            _tableDependency.OnChanged += SqlTableDependency_Changed;
            _tableDependency.OnError   += SqlTableDependency_OnError;
            _tableDependency.Start();
        }
        protected override ModelToTableMapper <Product> OnInitializeMapper(ModelToTableMapper <Product> modelToTableMapper)
        {
            modelToTableMapper.AddMapping(c => c.Id, "Id");
            modelToTableMapper.AddMapping(c => c.Name, "Name");

            return(modelToTableMapper);
        }
Beispiel #24
0
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;

            var mapper = new ModelToTableMapper <Customer>();

            mapper.AddMapping(c => c.Surname, "Last Name");
            mapper.AddMapping(c => c.Name, "First Name");

            dep = new SqlTableDependency <Customer>(_con, "Customers", mapper: mapper);

            dep.OnChanged += Changed;
            dep.Start();

            using (SqlConnection connection = new SqlConnection(_con))
                using (SqlCommand command = new SqlCommand("Select * from Customers", connection))
                {
                    connection.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var cust = new Customer();
                            cust.Id      = Convert.ToInt32(reader["Id"]);
                            cust.Name    = reader["First Name"].ToString();
                            cust.Surname = reader["Last Name"].ToString();
                            GridSource.Add(cust);
                        }
                    }
                }

            this.Closed += MainWindow_Closed;
        }
Beispiel #25
0
        public static IModelToTableMapper <T> GetModelMapperFromColumnDataAnnotation()
        {
            var modelPropertyInfosWithColumnAttribute = typeof(T)
                                                        .GetProperties(BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public)
                                                        .Where(x => CustomAttributeExtensions.IsDefined((MemberInfo)x, typeof(ColumnAttribute), false))
                                                        .ToArray();

            if (!modelPropertyInfosWithColumnAttribute.Any())
            {
                return(null);
            }

            var mapper = new ModelToTableMapper <T>();

            foreach (var propertyInfo in modelPropertyInfosWithColumnAttribute)
            {
                var attribute    = propertyInfo.GetCustomAttribute(typeof(ColumnAttribute));
                var dbColumnName = ((ColumnAttribute)attribute)?.Name;
                if (dbColumnName != null && mapper.GetMapping(dbColumnName) != null)
                {
                    throw new ModelToTableMapperException("Duplicate mapping for column " + dbColumnName);
                }

                mapper.AddMapping(propertyInfo, dbColumnName);
            }

            return(mapper);
        }
Beispiel #26
0
        public void UpdateOneInterestedColumn()
        {
            SqlTableDependency <NotificationOnlyWhenNewValueIsDifferentFromOldValueSqlServerModel> tableDependency = null;
            string naming;

            try
            {
                var mapper = new ModelToTableMapper <NotificationOnlyWhenNewValueIsDifferentFromOldValueSqlServerModel>();
                mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second NAME");

                tableDependency            = new SqlTableDependency <NotificationOnlyWhenNewValueIsDifferentFromOldValueSqlServerModel>(ConnectionStringForTestUser, tableName: TableName, mapper: mapper);
                tableDependency.OnChanged += TableDependency_Changed1;
                tableDependency.Start();
                naming = tableDependency.DataBaseObjectsNamingConvention;

                var t = new Task(ModifyTableContent1);
                t.Start();
                Thread.Sleep(1000 * 10 * 1);
            }
            finally
            {
                tableDependency?.Dispose();
            }

            Assert.AreEqual(_counter1, 2);
            Assert.AreEqual(CheckValues1[0].Item2.Name, CheckValues1[0].Item1.Name);
            Assert.AreEqual(CheckValues1[0].Item2.Surname, CheckValues1[0].Item1.Surname);
            Assert.AreEqual(CheckValues1[1].Item2.Name, CheckValues1[1].Item1.Name);
            Assert.AreEqual(CheckValues1[1].Item2.Surname, CheckValues1[1].Item1.Surname);

            Assert.IsTrue(base.AreAllDbObjectDisposed(naming));
            Assert.IsTrue(base.CountConversationEndpoints(naming) == 0);
        }
Beispiel #27
0
        public TransactionDependency(TransactionSyncService trtSyncSvc, IStoreDataProvider storeProvider)
        {
            _trtSyncSvc = trtSyncSvc;
            var connectionString = ConfigurationManager.AppSettings["DATA.CONNECTIONSTRING"];
            var providerName     = ConfigurationManager.AppSettings["DATA.PROVIDER"];

            _storeProvider = storeProvider;

            var mapper = new ModelToTableMapper <OrderDetailDto>();

            mapper.AddMapping(c => c.OrderDetailUId, "OrderDetailUId");
            mapper.AddMapping(c => c.Order_UId, "Order_UId");
            //mapper.AddMapping(c => c.Product_Id, "Product_Id");
            //mapper.AddMapping(c => c.CostPrice, "CostPrice");
            //mapper.AddMapping(c => c.Discount, "Discount");
            //mapper.AddMapping(c => c.Price, "Price");
            //mapper.AddMapping(c => c.Quantiy, "Quantiy");
            //mapper.AddMapping(c => c.EntryDate, "EntryDate");

            tableDependency = new SqlTableDependency <OrderDetailDto>(connectionString, "[dbo].[OrderDetails]", mapper);
            tableDependency.TraceListener = new TextWriterTraceListener(Console.Out);
            tableDependency.OnChanged    += tableDependency_OnChanged;
            tableDependency.OnError      += tableDependency_OnError;
            tableDependency.TraceListener = new TextWriterTraceListener(File.Create("c:\\Iposlogs\\transactionlogoutput.txt"));
        }
Beispiel #28
0
        public void DatabaseObjectCleanUpTest()
        {
            var mapper = new ModelToTableMapper <EventForAllColumnsTestSqlServerModel>();

            mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

            var tableDependency = new SqlTableDependency <EventForAllColumnsTestSqlServerModel>(ConnectionStringForTestUser, TableName, mapper);

            tableDependency.OnChanged += TableDependency_OnChanged;
            tableDependency.Start();
            DbObjectsNaming = tableDependency.DataBaseObjectsNamingConvention;

            Thread.Sleep(50);

            var t = new Task(BigModifyTableContent);

            t.Start();
            Thread.Sleep(1000 * 10 * 1);

            Thread.Sleep(1000 * 30 * 1);
            tableDependency.Stop();

            SmalModifyTableContent();

            Thread.Sleep(4 * 60 * 1000);
            Assert.IsTrue(base.AreAllDbObjectDisposed(DbObjectsNaming));
            Assert.IsTrue(base.CountConversationEndpoints(DbObjectsNaming) == 0);
        }
Beispiel #29
0
        public void Test()
        {
            var namingToUse = "CustomNaming";

            var mapper = new ModelToTableMapper <NoDisposeAndRestartWithSameObjectsTestSqlServerModel>();

            mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

            RunFirstTime(namingToUse);
            Thread.Sleep(3 * 60 * 1000);

            using (var tableDependency = new SqlTableDependency <NoDisposeAndRestartWithSameObjectsTestSqlServerModel>(ConnectionString, TableName, mapper, true, namingToUse))
            {
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start();
                Assert.AreEqual(tableDependency.DataBaseObjectsNamingConvention, namingToUse);

                Thread.Sleep(1 * 25 * 1000);

                var t = new Task(ModifyTableContent);
                t.Start();
                t.Wait(1 * 60 * 1000);
            }

            Assert.IsTrue(SqlServerHelper.AreAllDbObjectDisposed(ConnectionString, namingToUse));
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Name, _checkValues[ChangeType.Insert.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Insert.ToString()].Item2.Surname, _checkValues[ChangeType.Insert.ToString()].Item1.Surname);
            Assert.AreEqual(_checkValues[ChangeType.Update.ToString()].Item2.Name, _checkValues[ChangeType.Update.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Update.ToString()].Item2.Surname, _checkValues[ChangeType.Update.ToString()].Item1.Surname);
            Assert.AreEqual(_checkValues[ChangeType.Delete.ToString()].Item2.Name, _checkValues[ChangeType.Delete.ToString()].Item1.Name);
            Assert.AreEqual(_checkValues[ChangeType.Delete.ToString()].Item2.Surname, _checkValues[ChangeType.Delete.ToString()].Item1.Surname);
        }
Beispiel #30
0
        public void TaskCancellationTest()
        {
            string naming = null;
            SqlTableDependency <TaskCancellationTestSqlServerModel> tableDependency = null;

            try
            {
                var mapper = new ModelToTableMapper <TaskCancellationTestSqlServerModel>();
                mapper.AddMapping(c => c.Name, "First Name").AddMapping(c => c.Surname, "Second Name");

                tableDependency            = new SqlTableDependency <TaskCancellationTestSqlServerModel>(ConnectionStringForTestUser, TableName, mapper);
                tableDependency.OnChanged += TableDependency_Changed;
                tableDependency.Start();
                naming = tableDependency.DataBaseObjectsNamingConvention;

                Thread.Sleep(5000);

                tableDependency.Stop();

                Thread.Sleep(5000);
            }
            catch
            {
                tableDependency?.Dispose();
            }

            Assert.IsTrue(base.AreAllDbObjectDisposed(naming));
            Assert.IsTrue(base.CountConversationEndpoints(naming) == 0);
        }
        public void TestInsertAfterStop()
        {
            var mapper = new ModelToTableMapper <DatabaseObjectCleanUpTestSqlServerModel>();

            mapper.AddMapping(c => c.Name, "FIRST name").AddMapping(c => c.Surname, "Second Name");

            var tableDependency = new SqlTableDependency <DatabaseObjectCleanUpTestSqlServerModel>(
                ConnectionStringForTestUser,
                includeOldValues: true,
                tableName: TableName,
                mapper: mapper);

            tableDependency.OnChanged += (sender, e) => { };
            tableDependency.Start();
            var dbObjectsNaming = tableDependency.DataBaseObjectsNamingConvention;

            var t = new Task(BigModifyTableContent);

            t.Start();
            Thread.Sleep(1000 * 15 * 1);

            tableDependency.Stop();

            SmalModifyTableContent();

            Thread.Sleep(1 * 15 * 1000);
            Assert.IsTrue(base.AreAllDbObjectDisposed(dbObjectsNaming));
            Assert.IsTrue(base.CountConversationEndpoints(dbObjectsNaming) == 0);
        }
Beispiel #32
0
        public void BenginsendData()
        {
            // string constr = "Data Source=thunder;User Id=thunder;Password=thunder;";
            string constr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=119.2.29.18)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=thunder)));User Id=thunder;Password=thunder;";
            string table = "STATIONSTATE";
            //try
            //{
            //    OracleDependency.Port = 49500;

            //    OracleConnection s = new OracleConnection(constr);
            //    s.Open();
            //    OracleDependency dep;
            //    //public static string sql = sqlSelect + "where employee_id < 200";
            //    OracleCommand cmd = new OracleCommand("select * from stationlastdata", s);
            //    //绑定OracleDependency实例与OracleCommand实例
            //    dep = new OracleDependency(cmd);
            //    //指定Notification是object-based还是query-based,前者表示表(本例中为tab_cn)中任意数据变化时都会发出Notification;后者提供更细粒度的Notification,例如可以在前面的sql语句中加上where子句,从而指定Notification只针对查询结果里的数据,而不是全表。
            //    dep.QueryBasedNotification = false;
            //    //是否在Notification中包含变化数据对应的RowId
            //    dep.RowidInfo = OracleRowidInfo.Include;
            //    //指定收到Notification后的事件处理方法
            //    dep.OnChange += new OnChangeEventHandler(OnNotificaton);
            //    //是否在一次Notification后立即移除此次注册
            //    cmd.Notification.IsNotifiedOnce = true;
            //    //此次注册的超时时间(秒),超过此时间,注册将被自动移除。0表示不超时。
            //    cmd.Notification.Timeout = 0;
            //    //False表示Notification将被存于内存中,True表示存于数据库中,选择True可以保证即便数据库重启之后,消息仍然不会丢失
            //    cmd.Notification.IsPersistent = true;
            //    //
            //    OracleDataReader odr = cmd.ExecuteReader();
            //}
            //catch (Exception ex)
            //{

            //    throw ex;
            //}

            try
            {
                OracleTableDependency<Item> tableDependency = null;
                OracleConnection s = new OracleConnection(constr); s.Open();
                var mapper = new ModelToTableMapper<Item>();
                mapper.AddMapping(c => c.NAME, "NAME");
                mapper.AddMapping(c => c.SID, "SID");
                mapper.AddMapping(c => c.DATETIME, "TIMEMARK");

                tableDependency = new OracleTableDependency<Item>(constr, table, mapper);
                tableDependency.OnChanged += Changed;
                tableDependency.Start();
                //naming = tableDependency.DataBaseObjectsNamingConvention;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }