一、新建一个解决方案,包含两个项目:EF6CodeFirstMySQL.Model(动态库项目),EF6CodeFirstMySQL.Tests(控制台应用)

二、通过NuGet将EntityFramework6及MySql.Data.Entity包引入解决方案(两个项目都要引入)

三、在Model项目中添加三个类,BaseBill,Contract,DeliveryNote,后面两个类从BaseBill类继承。(代码参见附件)

四、在Model项目中添加DataModelContext类,继承自DbContext

public classDataModelContext : DbContext

{publicDataModelContext()

:base("DataModelContext")//web.config中connectionstring的名字

{

}public DbSet Contracts { get; set; }public DbSet DeliveryNotes { get; set; }protected override voidOnModelCreating(DbModelBuilder modelBuilder)

{//指定单数形式的表名

modelBuilder.Conventions.Remove();//物理表名添加xx前綴

modelBuilder.Types().Configure(f => f.ToTable("xx" +f.ClrType.Name));

}

}

DataModelContext

五、在Model项目中添加DataModelInitializer类,用于初始化数据库中的数据

public class DataModelInitializer : DropCreateDatabaseIfModelChanges //CreateDatabaseIfNotExists

{protected override voidSeed(DataModelContext context)

{var contracts = new List{new Contract{ BillNo = "PO20150201-001", BillDate=new DateTime(2015, 2, 1), TotalPrice=9876543.21M, Supplier = "Microsoft"},new Contract{ BillNo = "PO20141230-088", BillDate=new DateTime(2014, 12, 30), TotalPrice=1234567.89M, Supplier = "Oracle"},

};

context.Contracts.AddRange(contracts);

context.SaveChanges();//可以分次提交,也可以最后一次性提交给数据库

var deliveries = new List{new DeliveryNote{ BillNo = string.Format("DN{0:yyyyMMdd}-006", DateTime.Today), TotalPrice=445566M, Contract=contracts.First(), Checker="张三"},

};

context.DeliveryNotes.AddRange(deliveries);

context.SaveChanges();//可以分次提交,也可以最后一次性提交给数据库

}

}

DataModelInitializer

六、编辑app.config配置文件(注意:实际使用的配置文件为应用程序项目中的app.config或web.config,动态库项目中的app.config在运行时不起作用)

app.config

七、编辑Tests项目中的Program.Main()方法,从数据库中读取数据并在控制台显示

static void Main(string[] args)

{using(var ctx = newDataModelContext())

{foreach (DeliveryNote dn in ctx.DeliveryNotes.Include("Contract"))

{

Console.WriteLine(string.Format("送货单号:{0},送货日期:{1:yyyy-MM-dd},到货金额:{2:#0,000.00},合同编号:{3},供应商:{4},合同总金额:{5},合同总金额(直接属性):{6}",

dn.BillNo, dn.BillDate, dn.TotalPrice, dn.Contract.BillNo, dn.Contract.Supplier, dn.Contract.TotalPrice, dn.ContractTotalPrice));

}

}

Console.WriteLine("\n\n按[回车]键退出...");

Console.ReadLine();

}

Main()

八、一切准备就绪,按F5,欢快的跑起来吧!

如果程序运行不起来,请先检查app.config文件中ConnectionString的设置是否正确(例如MySQL服务器地址、端口),再检查MySQL服务是否已开启。

九、最后我们来查看一下自动生成的数据表结构及初始化时填充的数据

first() mysql_EF6配合MySQL或MSSQL(CodeFirst模式)配置指引相关推荐

  1. mysql数据库主主模式配置

    主主复制 互为主从:问题 1.数据不一致,因此慎用. 2.自动增长ID: 配置一个节点使用奇数id auto_increment_offset=1 auto_increment_increment=2 ...

  2. docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...

    一.MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Communi ...

  3. php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...

    MYSQL导入导出sql文件简析 一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin ...

  4. mysql 数据库dbhelp_策略模式实现支持多种类数据库的DBHelp

    概述 需求 有时我们的系统需要支持多种数据库,如即要支持MSSQL server又要同时支持Oracle database.而如果我们为些实现两套数据库操作的方式,就会不能很好的达到软件设计的目标:高 ...

  5. .Net Core 使用EF Core codefirst模式

    .Net Core 使用EF Core codefirst模式 什么是codefirst模式 EF Core有两种数据库设计模式,DBfirst 数据库优先.Codefirst 代码优先. 1.我们一 ...

  6. keepalive 配合mysql主主复制

    keepalive安装(配合mysql主主复制) 系统:centos5.5_64 #vip为程序读取mysql的IP,应和程序服务器的网卡一个网段 主库实际IP   192.168.10.48 从库实 ...

  7. mysql快速迁移数据sql_使用Navicat Premium工具快速迁移数据方法 适用于mysql及mssql数据库...

    前言:在工作中,经常遇到将mysql或mssql数据库从其他服务器转移到新服务器,一般常规操作方法是在原来数据库处导出,然后在新的数据库中导入,这种方法也是可以的,但数据会下载到本地进行中专,下面介绍 ...

  8. 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移

    一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...

  9. 第十四节: EF的三种模式(四) 之 原生正宗的 CodeFirst模式的默认约定

    一. 简介 1. 正宗的CodeFirst模式是不含有edmx模型,需要手动创建实体.创建EF上下文,然后生成通过代码来自动映射生成数据库. 2. 旨在:忘记SQL.忘记数据库. 3. 三类配置:On ...

最新文章

  1. 【转载】网络视频企业探索盈利模式 PPS研发新展示系统
  2. Android开发--Http操作介绍(二)
  3. Windows下VisualSVN Server的安装与配置方法(图文)
  4. 风暴航路的地图编号_砖厂风暴航路已倒闭,新的搬砖圣地诞生
  5. NYOJ 676 小明的求助
  6. C#获取网页中某个元素的位置,并模拟点击
  7. WeChat生成授权的token:md5(随机字符串+时间戳+盐值)
  8. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...
  9. Cassandra Dev 1: Cassandra 入门
  10. 如何和何时使用 CSS 的权重设置 !important (建议:永不使用!)
  11. scrapy —— ImagePipeline
  12. 检查java_如何检查Java版本?
  13. win7下文本文档不能直接修改后缀是为什么?怎么办?
  14. spring无法连接mysql_初学Spring——连接MySQL数据库的问题和解决
  15. 力扣-509 裴波那契数
  16. excel函数修改服务器端数据,勤哲Excel服务器表达式函数详解
  17. PCworld 101个 fabulous Freebies
  18. DSP入门小白学习日记第四篇
  19. 【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统
  20. Vue 国家省市三级联动

热门文章

  1. 对象内存布局 (5)
  2. ESP8266代码分析
  3. C#调用C++(opencv)中图片数据传递的问题
  4. thetae_1在MATLAB中的意思,无刷直流电机在Matlab中的建模与仿真研究_荣军
  5. SQL注入-二阶注入(十)
  6. getX(),getY()等方法的区别(图解)
  7. android 设置网络超时时间设置,Android:AndroidHttpClient-如何设置超时时间?
  8. 如何解决用伪元素点击下拉列表触发不了事件的问题
  9. BaseRecyclerViewAdapterHelper结合autolayout使用
  10. React全栈之Instagram开源视频教程