first() mysql_EF6配合MySQL或MSSQL(CodeFirst模式)配置指引
一、新建一个解决方案,包含两个项目: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模式)配置指引相关推荐
- mysql数据库主主模式配置
主主复制 互为主从:问题 1.数据不一致,因此慎用. 2.自动增长ID: 配置一个节点使用奇数id auto_increment_offset=1 auto_increment_increment=2 ...
- docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...
一.MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Communi ...
- php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...
MYSQL导入导出sql文件简析 一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin ...
- mysql 数据库dbhelp_策略模式实现支持多种类数据库的DBHelp
概述 需求 有时我们的系统需要支持多种数据库,如即要支持MSSQL server又要同时支持Oracle database.而如果我们为些实现两套数据库操作的方式,就会不能很好的达到软件设计的目标:高 ...
- .Net Core 使用EF Core codefirst模式
.Net Core 使用EF Core codefirst模式 什么是codefirst模式 EF Core有两种数据库设计模式,DBfirst 数据库优先.Codefirst 代码优先. 1.我们一 ...
- keepalive 配合mysql主主复制
keepalive安装(配合mysql主主复制) 系统:centos5.5_64 #vip为程序读取mysql的IP,应和程序服务器的网卡一个网段 主库实际IP 192.168.10.48 从库实 ...
- mysql快速迁移数据sql_使用Navicat Premium工具快速迁移数据方法 适用于mysql及mssql数据库...
前言:在工作中,经常遇到将mysql或mssql数据库从其他服务器转移到新服务器,一般常规操作方法是在原来数据库处导出,然后在新的数据库中导入,这种方法也是可以的,但数据会下载到本地进行中专,下面介绍 ...
- 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移
一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...
- 第十四节: EF的三种模式(四) 之 原生正宗的 CodeFirst模式的默认约定
一. 简介 1. 正宗的CodeFirst模式是不含有edmx模型,需要手动创建实体.创建EF上下文,然后生成通过代码来自动映射生成数据库. 2. 旨在:忘记SQL.忘记数据库. 3. 三类配置:On ...
最新文章
- 【转载】网络视频企业探索盈利模式 PPS研发新展示系统
- Android开发--Http操作介绍(二)
- Windows下VisualSVN Server的安装与配置方法(图文)
- 风暴航路的地图编号_砖厂风暴航路已倒闭,新的搬砖圣地诞生
- NYOJ 676 小明的求助
- C#获取网页中某个元素的位置,并模拟点击
- WeChat生成授权的token:md5(随机字符串+时间戳+盐值)
- python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...
- Cassandra Dev 1: Cassandra 入门
- 如何和何时使用 CSS 的权重设置 !important (建议:永不使用!)
- scrapy —— ImagePipeline
- 检查java_如何检查Java版本?
- win7下文本文档不能直接修改后缀是为什么?怎么办?
- spring无法连接mysql_初学Spring——连接MySQL数据库的问题和解决
- 力扣-509 裴波那契数
- excel函数修改服务器端数据,勤哲Excel服务器表达式函数详解
- PCworld 101个 fabulous Freebies
- DSP入门小白学习日记第四篇
- 【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统
- Vue 国家省市三级联动
热门文章
- 对象内存布局 (5)
- ESP8266代码分析
- C#调用C++(opencv)中图片数据传递的问题
- thetae_1在MATLAB中的意思,无刷直流电机在Matlab中的建模与仿真研究_荣军
- SQL注入-二阶注入(十)
- getX(),getY()等方法的区别(图解)
- android 设置网络超时时间设置,Android:AndroidHttpClient-如何设置超时时间?
- 如何解决用伪元素点击下拉列表触发不了事件的问题
- BaseRecyclerViewAdapterHelper结合autolayout使用
- React全栈之Instagram开源视频教程