Exemple #1
0
        public void opcReferenceReady(IOpcReference reference)
        {
            Console.WriteLine("opcReferenceReady");
            if (null != MysqlContext.plcvalue)
            {
                return;
            }
            TypeBuilder builder = DynamicType.CreateTypeBuilder(
                "EF_DynamicModelAssembly",
                "DynamicModule",
                "plc_value");

            DynamicType.CreateAutoImplementedProperty(builder, "id", typeof(int));  //添加主键

            //TagColPair
            List <TagColPair> tplist = new List <TagColPair>(reference.OpcTagList.Count);

            for (int i = 0; i < reference.OpcTagList.Count; i++)
            {
                var conname = string.Format("item_{0}", i);
                var x       = new TagColPair()
                {
                    tagName = reference.OpcTagList[i].tagName, colName = conname
                };
                tplist.Add(x);
                //添加业务数据属性
                //判断类型是否是可为空的
                //value.GetType().isi
                //Nullable
                Type ptype = reference.OpcTagList[i].type;

                /*
                 * if (!ptype.IsClass && !ptype.IsInterface)
                 * {
                 *  //说明是值类型,设为可为空的
                 *  ptype = typeof(Nullable<>).MakeGenericType(reference.OpcTagList[i].type);
                 * }
                 */
                DynamicType.CreateAutoImplementedProperty(builder, conname, ptype);
            }
            MysqlContext.plcvalue   = builder.CreateType();     //动态entity类型
            MysqlContext.initeddata = tplist;                   //对应的表
            MysqlContext db = new MysqlContext(dbconfigname);

            try
            {
                oldrecord = getFirstRecord();
            }
            catch (Exception ex)
            {
                log.Warn("opcReferenceReady 操作数据库失败", ex);
                Console.WriteLine("opcReferenceReady 操作数据库失败");
            }
            finally
            {
                db.Dispose();
            }
        }
Exemple #2
0
 public void opcReferenceReady(IOpcReference reference)
 {
     post("opcReferenceReady", reference);
 }