判定是否为枚举型:type.IsEnum
应用原型:如果是枚举返回字符型,如果是其他类型直接返回;
object value = pro1.FieldType.IsEnum ? pro1.GetValue(task).ToString() : pro1.GetValue(task);
设计和属性以及字段
作为设计,最好统一使用属性(Property),而不是Field,这里存在一个未来统一处理,比如反射统一反射Property获取属性值;不适用field是因为它不够灵活,一旦稍微获取有点逻辑处理,就不能很好的使用统一处理;所以属性更加灵活;
OpenFileDialog的使用
应用原型:弹出框来选择文件
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.txtFileName.Text = openFileDialog1.FileName; }
MySql的连接使用
MySql针对Java和.Net都有connector,安装路径是“http://dev.mysql.com/downloads/connector/”,对于C#而言选择“Connector for NET”,安装之后就应该在GAC中注册了该组件,可以在右键“引用”中发现MySql.dll,之后就可以在ADO.NET体系下使用MySql
public void InsertToMySql(String pSQL) { MySqlCommand myCommand = null; using (MySqlConnection conn = new MySqlConnection()) { conn.ConnectionString = ConfigurationManager.ConnectionStrings["mySqlConnStr"].ConnectionString; conn.Open(); myCommand = new MySqlCommand(pSQL, conn); int influentCount = myCommand.ExecuteNonQuery(); conn.Close(); this.lblInfluenceCount.Text = Convert.ToString(influentCount.ToString()); MessageBox.Show("OK!"); } }
WinForm程序直接跳出
在测试类中完美跑完Case,但是在WinForm工程执行到访问EF访问DB,直接跳出去,Form展示;后来发现没有在app文件中配置EF相关信息;不过没有报错,直接跳出有点太直接了。仍然跳出;没有往常调试黄色中断;后来添加try…catch…捕获到了异常。
Could not load file or assembly 'MySql.Data, Version=6.6.5.0…
解决方案:将MySQL安装路径下MySQLConnector NET 6.7.4AssembliesvX.0的MySql.Data.dll以及MySql.Data.Entity.dll拷贝到bin目录下即可。
DB结合Entity Framework工作流程
首先是更新文档(PowerDesigner),如果是数据无所谓,直接通过右键“Preview SQL“进行copySQL文直接在MySql上面运行;
更新edmx文件,保持和DB同步;
最后是更新一下对应的业务实体对象(不是数据实体,数据实体交给edmx即可);
count++和count+1的区别
pNode.StepNo = this.allNodes.Count + 1;
一切都正常,但是在上面之前我是这样处理的,爆出异常:
property or indexer 'System.Collections.Generic.List<Entity.BizWorkflowSequeuece>.Count' cannot be assigned to -- it is read only
这两者的区别就在于,前者不会改变count的值,后者是会改变count值的。
调试抛出异常定位
Form工程,引入其他工程,如果其他工程发生异常,调试状态下,会直接跳出程序,而不会说停下来,定位到异常处:
Debug->Exceptions;勾选上Common Language Runtime Exception