一直想搞一个EFCodeFirst的Demo,让自己通过实例真正了解CodeFirst,方便以后有需求的时候可以有思路。网上查了很多资料,发现很多博主的文章大量重复,根据推荐步骤走并不一定能够成功,而且有些注意点没有讲清楚,导致我花费了很长时间才搞定。

现在把具体步骤写出来,总结,记录,分享下EFCodeFirst的精简实例。

Mysql的安装步骤不再给出,安装过程对本实例没有影响,只要记住mysql的root账号密码即可。

Mysql安装完成后需要能使用MySql WorkBench登陆,并看到本机所有的数据库(后面会用到)。

环境:

  • VS2017
  • .net v4.0
  • Mysql v5.7
  • EntityFramework v6.0
  • MySql.Data v6.9.12
  • MySql.Data.Entity v6.9.1
  • 新建项目

新建控制台项目,命名随意,我名称设置为EFCodeFirstDemo

  • 添加必要引用

当前项目名称上,右键-管理NuGet程序包,安装下图中的组件包,注意对应的版本(版本不同可能会有一些影响,具体未知,有时间的话可以研究下不同版本的效果)

在VS2017中,点击程序包后,右侧可选择安装版本

  • 编辑数据库连接字符串

在App.config中插入如下字符

  <connectionStrings>
<add name="MyContext"
connectionString="Server=127.0.0.1;port=3306;Initial Catalog=CodeFirstDemoDB;uid=root;pwd=mysqlroot;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
Server:数据库地址
port:数据库端口
Initial Catalog:本项目对应的数据库名称(此时数据库可不存在,程序运行后会自动创建,不要用在数据库连接工具中手动创建的,否则程序不会再自动创建表)
最终的App.config文件内容如下,有不同的建议酌情修改,但不要完全复制:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v13.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
</entityFramework>
<connectionStrings>
<add name="MyContext"
connectionString="Server=127.0.0.1;port=3306;Initial Catalog=efcodefirst;uid=root;pwd=mysqlroot;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data></configuration>
  • 新建类/表

using System;

namespace CodeFirstDemo
{
public class Student
{
public string ID { get; set; }
public string Name { get; set; }
public Int32 Age { get; set; }
public string Sex { get; set; }
public Boolean State { get; set; }
public DateTime? CreateTime { get; set; }
}
}

如果没有指定主键ID会被默认设置为主键

using System.Data.Entity;

namespace CodeFirstDemo
{
public class CodeFirstDbContext: DbContext
{
public CodeFirstDbContext() : base("name=MyContext")
{ } public DbSet<Student> Studen { get; set; }
}
}
MyContext为App.Config中<connectionStrings/>对应的的Name
  • 测试代码

using System;

namespace CodeFirstDemo
{
class Program
{
static void Main(string[] args)
{
CodeFirstDbContext db = new CodeFirstDbContext();
db.Database.CreateIfNotExists();
for (int i = ; i < ; i++)
{
Student s = new Student
{
ID = Guid.NewGuid().ToString(),
Name = "Name-" + i,
Age = + i,
Sex = "God",
State = true,
CreateTime = DateTime.Now
};
db.Studen.Add(s);
}
db.SaveChanges();
}
}
}

确认无误后运行:

自动生成的数据库和表

插入的数据:

以上内容如有纰漏欢迎指出,如在操作过程中有其他疑问也可直接留言

最新文章

  1. Ubuntu下的Notepad++:Notepadqq
  2. touches, targetTouches, changedTouches 区别
  3. 锋利的JQuery —— 选择器
  4. How Spring Boot Autoconfiguration Magic Works--转
  5. 用Qt写软件系列五:一个安全防护软件的制作(3)
  6. gtest vs2015配置
  7. ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS
  8. Nginx 引入线程池,提升 9 倍性能
  9. POJ #1141 - Brackets Sequence - TODO: POJ website issue
  10. [Node.js] Broswerify -- 2
  11. Linux安装oracle 10g常见问题之——OUI-25031
  12. winows 进程通信的实例详解
  13. java 伪共享
  14. Appium移动自动化测试(四)--one demo(转)
  15. C# 输入法
  16. 如何加速golang写业务的开发速度
  17. Mxnet编译安装
  18. nginx+php使用open_basedir限制站点目录防止跨站
  19. C++对象的内存分布和虚函数表
  20. linux系统下find命令的使用

热门文章

  1. ue4 fstring 和std::string互转
  2. 解决git的the remote end hung up问题_百度经验
  3. Cron定时任务应用到Thinkphp – 贤生博客
  4. jsp页面_按回车键触发事件
  5. spring源码学习之默认标签的解析(二)
  6. Django静态文件以及模板文件的配置 jQuery v1.12.4
  7. 缺氧debug模式开启及功能
  8. LintCode刷题笔记-- Distinct Subsequences
  9. 【模板】树的重心 洛谷P1364 医院设置
  10. Spring-data-jpa时间按照between and 查询