EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架。同其它ORM(如,NHibernate,Hibernate)一样,

一是为了使开发人员以操作对象的方式去操作关系型数据表。

二是为了屏蔽底层不同厂商的数据库,开发人员面向ORM框架编写数据的CRUD(Create,Retrieve,Update,Delete)操作,再由ORM框架将这些操作翻译成不同数据库厂商的语言。

从EF 4.X开始支持三种构建方法:1. Database First方法。2.Model First方法。3.Code First 方法。

本次测试以Visual Studio2013 / MS Sql Server2012 / Entity Framework 6.X 测试EF

Database First Demo

1:打开SQLServer2012,使用下面SQL文本创建MyFirstEF数据库及CustomerInfo/OrderInfo表格

create database MyFirstEF
on primary
(
name='MyFirstEF.mdf',
--修改为自己电脑上SQL DB路径
filename='D:\yangZ_MSSQL\MyFirstEF.mdf',
size=5mb,
maxsize=100mb,
filegrowth=10%
)
log on
(
name='MyFirstEF_log.ldf',
--修改为自己电脑上SQL DB路径
filename='D:\yangZ_MSSQL\MyFirstEF_log.ldf',
size=2mb,
maxsize=100mb,
filegrowth=5mb
)
go use MyFirstEF
go create table CustomerInfo
(
id int identity(1,1) primary key,
customerName nvarchar(100) not null,
customerDate datetime
)
go create table OrderInfo
(
id int identity(1,1) primary key,
orderName nvarchar(100),
customerId int
)
go alter table OrderInfo
add constraint FK_OrderInfo_CustomerInfo foreign key(customerId) references CustomerInfo(id)
go insert into CustomerInfo
select 'aa',GETDATE() union all
select 'bb',GETDATE() union all
select 'cc',GETDATE() union all
select 'dd',GETDATE()
go insert into OrderInfo
select 'bike1',2 union all
select 'bike2',2 union all
select 'car1',3 union all
select 'car2',3 union all
select 'chezi1',4 union all
select 'chezi2',4
go select * from CustomerInfo
go select * from OrderInfo
go

--create SQL

2:新建ConsoleApplication应用程序

3:在EFDataBaseFirstDemo上 右键-->新建-->新建项-->数据-->ADO.NET实体数据模型,选择从数据库生成(Database First)

选择数据库,用户名,密码等,这和普通的链接数据库操作一样,最后生成的配置文件会保存在App.config文件中

点击下一步,选择数据库表格,这里我们选择CustomerInfo 和OrderInfo表格,勾选[确定所生成对象名称的单复数形式][在模型中包含外键列]

模型命名空间可以修改为自己需要的,这里我使用默认的模型命名空间

点击完成,可能会出现以下警告,直接点击[确定],生成的EF实体图本质是xml

EF实体图,这时候记得点击保存按钮(Ctrl+S),保存生成的EF实体图

最后整个项目源码结构如下图所示:

最后在ConsoleApplication中做一个简单的查询Demo

DbContext context = new MyFirstEFEntities();

var rows = context.Set<CustomerInfo>().Select(c => c.customerName);
foreach (var row in rows)
{
Console.WriteLine(row);
}
Console.WriteLine("Database First Finish");
Console.ReadKey();

PS:使用EF Database First时,若修改数据库表结构,或者字段,需要在**.edmx中做如下操作,然后点击保存

 

最新文章

  1. QQ右下角图标不见了
  2. java8 引进lamda
  3. iOS开发——动画编程Swift篇&amp;(一)UIView基本动画
  4. 基于OCR的SeeTest框架可行性分析总结
  5. .net图片裁剪抠图之性能优化
  6. WPF 简易的跑马灯效果
  7. esp8266 终于装上固件了!半个月了!开始进军简单粗暴的lua语言!!
  8. 备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)
  9. Flutter
  10. OpenResty:通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台
  11. Finance财务软件帮助
  12. 在 Docker 中使用 mysql 的一些技巧
  13. Python常用模块--collections
  14. python之requests模块快速上手
  15. Python Logging模块 输出日志颜色、过期清理和日志滚动备份
  16. Docker Kubernetes 容器更新与回滚
  17. MySQL 存储修改
  18. 20155227辜彦霖《基于Cortex-M4的UCOSIII的应用》课程设计个人报告
  19. 微信小程序 - 自定义switch切换(示例)
  20. jquery添加未来元素时,其绑定事件不起作用解决办法

热门文章

  1. 【Linux学习笔记】Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)
  2. mysql中变量
  3. 【Mybatis】Mybatis的sql模糊查询
  4. Opencv2.4.9+win7+VS2012一次性配置的方法--通过建立属性表永久配置
  5. 【JavaScript】基本类型和引用类型的值、引用类型
  6. 【BZOJ2756】奇怪的游戏(二分,网络流)
  7. MFC中ON_COMMAND,ON_MESSAGE,ON_NOTIFY的区别
  8. C内存对齐问题-bus error!总线错误!其实是 字符串字面量修改问题!
  9. vim在行首和 行尾加
  10. php中foreach使用引用的陷阱