自己首次用到了EF,为了利人利己,故将自己今天学的记录下来。

这个项目要用到的工具是VS2015、MySQL5.7.12 。

首先我们先建一个解决方案,里面建两个项目分别是Silentdoer.Main和Silentdoer.EfProj

其中Silentdoer.Main是控制台项目,用于执行操作MySQL的代码。

而Silentdoer.EfProj是类库项目,里面将添加ADO.NET 实体数据模型。

我们现在在Silentdoer.EfProj中添加一个ADO.NET 实体数据模型,这个模型对象是数据库和C#程序沟通的“桥梁”,数据表的数据可以通过这个“桥梁”直接在C#中操作(用LINQ会很方便),类似操作List<T>对象一样。新建过程如图:

其中DbForTest是我的MySQL数据仓库(Schema)的名字。(顺便提一下,Windows下MySQL默认Schema和数据表是不区分大小写的,最好将它设置为区分大小写,否则生成的类名字不合规范,当然我这次也没设置)。

设置方式:将lower_case_table_names设置为2

点击添加后来到第二步:

这里选择第一个就好。

点击下一步来到第三步:

这一步要注意,这里右上角新建的连接能且只能定位到一个Schema,一个Model不能同时访问两个数据仓库。这也是我前面为什么用DbForTestModel作为名字的原因(DbForTest是Schema/数据仓库名称),

新建连接时注意选择正确的数据源。

下面的连接字符串是否包含敏感数据(如密码),我为了偷懒直接选了是(如果这个是供服务端用选是一般也没关系),如果选择否的话,则当要用这个Model对象操作数据表之前需要先执行(schMdl是Model对象):

var schMdl = new DbForTestEntities(); schMdl.Database.Connection.ConnectionString="server=XX;database=XX;uid=XX;pwd=XX";(这种方式我感觉执行的时候貌似挺慢的。也可能是第一次执行会变慢,之后则速度正常。)

下面的将 App.Config 中的连接设置另存为(S):要勾上,否则不能更改下面TextBox中的内容,且生成的Model的类名固定为Entities,这明显没DbForTestEntities直观,且当你这里有多个Schema的Model时也许有啥问题也说不定(个人没测试过)。

接着点击下一步:

这里不知道是不是MySQL不够新的原因,我只能用EF5.0,等以后升级了EF6.x后再看看需不需要更新这篇文章。

点击下一步:

上面选择要在Model中“生成”的数据表,可以只选择一部分数据表,如图dttest和student。

这一步注意勾上:确定所生成对象名称的单复数形式(S) ,比如数据表student在C#程序中会以students的名字来显示,如果以student来代表数据表不能很好的直观的让人理解。

后面两个我个人自己选了默认的勾上(我还没用过它们)。

下面的模型命名空间我在弄好之后测了蛮久都不知道它有什么用,个人暂且认为这个参数没啥用,故我统一都用EfNamespace作为值。

点击完成后DbForTestModel就生成完毕。

生成后Silentdoer.EfProj项目如图(直观的可以看到多了DbForTestModel.edmx、packages.config,App.config中多了一些数据。其实项目中还多出了其它数据):

Model展示图如:

这里的dttest和student都可以改名,方式是对其右键-重构-重命名,然后改成新的名字即可(这里貌似部分大小写[也许和MySQL大小写敏感配置有关],不能从dttest改为Dttest,若要该要先改成其它的名字再改)。

接下来就在Silentdoer.Main项目中以DbForTestModel来操作dttest和student两个数据表中的数据吧:

首先在Silentdoer.Main中添加Silentdoer.EfProj项目的引用,然后在Main函数中写如下代码:

var dbMdl = new DbForTestEntities();
dbMdl.student.Add(new student {ClassName = "yibanna", Name = "woailuo"});
dbMdl.SaveChanges();

但是我这边还不能执行,系统提示要添加一些引用,所幸我的Resharper有提示,我自己按Resharper的提示然后就自动添加了,添加后Silentdoer.Main中也会出现:

packages.config文件,且App.config中也会加入EntityFramework相关的数据。

这时候运行异常提示没有配置连接字符串,我们需要从Silentdoer.EfProj的App.config中拷贝出<connectionStrings>...</connectionStrings>块添加到Silentdoer.Main中的App.config文件的对应位置中。

至此大功告成。运行后student表中会有一条新纪录。

最新文章

  1. 查看文本[Linux]
  2. markdown 语法测试
  3. linux 项目环境搭建配置
  4. Delphi XE5 android 获取网络状态
  5. 根据屏幕的宽度使用不同的css-文件
  6. Shell脚本的追踪与debug
  7. 20145305 《Java程序设计》第4周学习总结
  8. virtualbox 安装 android 经验总结
  9. 安卓CTS官方文档之兼容性方案概览
  10. 【Android开发学习笔记之一】5大布局方式详解
  11. 一个简单的java程序,用于RabbitMQ日志监控
  12. 使用通配符和泛型:完成父子类关系的List对象的类型匹配
  13. DWR第一篇之入门示例
  14. 照葫芦画瓢系列之Java --- Maven的集成和使用
  15. nginx常用配置
  16. Hadoop Ls命令添加显示条数限制參数
  17. L2-014. 列车调度(set)*
  18. python数据结构详解
  19. Python学习笔记(十)—— 高级特性
  20. 3-22 Ruby 编码规则(个人整理)

热门文章

  1. ASP.NET Core 认证与授权[7]:动态授权
  2. 【JDK1.8】JDK1.8集合源码阅读——TreeMap(二)
  3. OC语言的Block与Protocol(协议)
  4. 前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上
  5. 责任链模式(Chain of Responsibility)
  6. RabbitMQ Cluster群集安装配置
  7. ThreadLocal终极源码剖析
  8. POJ2251-Dungeon Master
  9. Google 视频编码格式 VP9 究竟厉害在哪里
  10. TensorFlow MNIST(手写识别 softmax)实例运行