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(); } }
public void opcReferenceReady(IOpcReference reference) { post("opcReferenceReady", reference); }