Пример #1
0
        private List <(string tableName, string conString, DatabaseType dbType)> GetTargetTables
            (string absTableName, ReadWriteType opType, string absDbName, object obj = null)
        {
            //获取抽象数据库
            AbstractDatabase db = null;

            if (absDbName.IsNullOrEmpty())
            {
                db = _absDb.Single();
            }
            else
            {
                db = _absDb.Where(x => x.AbsDbName == absDbName).Single();
            }
            if (db == null)
            {
                throw new Exception("请配置抽象数据库");
            }

            //获取抽象数据表
            var absTable = db.Tables.Where(x => x.AbsTableName == absDbName).Single();

            //获取物理表
            List <(string physicTableName, string dataSourceName)> physicTables = null;

            //读操作获取全部表
            if (opType == ReadWriteType.Read)
            {
                physicTables = absTable.PhysicTables;
            }
            else
            {
                //找特定表
                if (!obj.IsNullOrEmpty())
                {
                    var theTable = absTable.FindTable(obj);
                    physicTables = absTable.PhysicTables.Where(x => x.physicTableName == theTable).ToList();
                }
                //所有表
                else
                {
                    physicTables = absTable.PhysicTables;
                }
            }

            //获取数据源
            var dataSources = _dataSource
                              .Where(x => physicTables.Select(y => y.dataSourceName).Contains(x.DataSourceName))
                              .Select(x => new { x.DataSourceName, x.DbType, RandomHelper.Next(x.Dbs.Where(y => y.opType.HasFlag(opType)).ToList()).conString })
                              .ToList();

            var q = from a in physicTables
                    join b in dataSources on a.dataSourceName equals b.DataSourceName
                    select(a.physicTableName, b.conString, b.DbType);

            var resList = q.ToList();

            return(resList);
        }
Пример #2
0
        public IConfigInit AddPhysicDb(ReadWriteType opType, string conString, string groupName = "BaseDbGroup")
        {
            _physicDbs.Add(new PhysicDb
            {
                ConString = conString,
                GroupName = groupName,
                OpType    = opType
            });

            return(this);
        }
Пример #3
0
        public void addSendBuffer(ReadWriteType readWriteType, byte[] data)
        {
            UdpData pData = new UdpData();

            if (readWriteType == ReadWriteType.WRITE_AGV_D600)
            {
                pData.length = CmdOmlonWriteData(pData.buffer, byPlcDot, localDot, 601, 1, data, OMLONADDRESS.D);
            }
            Console.WriteLine(pData.buffer);
            //Queue<T>  不是线程安全的
            lock (sendDataLock)
            {
                sendDataList.Enqueue(pData);
            }
        }
Пример #4
0
 void IAddPhysicDb.AddPhsicDb(string conString, ReadWriteType opType)
 {
     _physicDbs.Add((conString, opType));
 }
Пример #5
0
 public ReadWriteAttribute(ReadWriteType readWriteType, Type type)
 {
     ReadWriteType = readWriteType;
     Type          = type;
 }