entityframework学习笔记--002-database first
1.实体框架紧紧地和Visual Studio集成在一起,为了在你的应用程序中使用实体框架,我们增加一个ADO.NET实体数据框架到你的项目。方法如下:
右键你的项目,然后选择 ➤New Item(新建项)。在弹出的对话框中(如图1-4),选择Data(数据)模板下边的ADO.NET Entity Date Model(实体数据模型)模板。然后单击Add(增加)打开数据模型创建导向。

图1-4 向项目中添加实体数据模型
2.在弹出的对话框中会有4个选项,1 来自数据库的EF设计器,2 空的EF设计器模型,3 空的CodeFirst模型,4 来自数据库的Code First。其中1和2算是一种方式,是使用可视化的ef设计器设计实体模型;3和4算是一种方式,是使用代码的方式设计实体模型。如下图1-5。本例中我所使用得数据库的表结构如图1-5-2

图1-5

图1-5-2
3.这其中初学者使用最多的也就是第一种了“来自数据库的EF设计器”,我们选择第一种,点击“下一步”,在弹出的对话框中选择“新建连接”,然后新建一个数据库连接。如图1-6.

图1-6
4.然后在弹出的对话框中选择“是,在连接字符串中包含敏感数据”,点击“下一步”。如图1-7

图1-7
5.选择所需要的数据库和表,选择“确定单复数形式”(这个是为了生成实体是去掉复数形式,比如我们的表叫做Students,生成的实体应该叫做Student,叫做Students就不合适了吧。),然后点击“完成”。如图1-8

图1-8
6.生成的ef实体模型视图就如1-9所示了,我们可以看到表之间的关系也已经被映射了进来,为此ef设计器还为我们生成了各自的导航属性,通过导航属性可以非常方便的访问关联属性。

图1-9
7.下面是一个简单的代码示例。我们可以使用模型设计器为我们生成的数据访问类“myefrecipesEntities”来进行数据库的访问操作。“myefrecipesEntities”继承自“DbContext”,DbContext是ef数据操作的核心。
static void Main(string[] args)
{
using (myefrecipesEntities db = new myefrecipesEntities())
{
Class c1 = new Class() { Name = "class1" };
Student s1 = new Student() { Name = "rj", Age = , Class = c1 }; db.Students.Add(s1); int i = db.SaveChanges(); foreach (var item in db.Students)
{
Console.WriteLine("name \t age \t class");
Console.WriteLine("{0} \t {1} \t {2}",item.Name,item.Age,item.Class.Name);
}
} Console.ReadKey();
}
代码输出:

8.本篇先到这里吧,还有几种生成实体模型的方式以后再介绍。总之,无论使用database first,model first,code first,我们最终要操作的都是其中射影的实体,例如本例中的Student,Class。其中的实体可以像使用程序中的其他类型一样,这样极大的提供了方便,同时也提高了来发的效率。
entityframework学习笔记--002-database first的更多相关文章
- 《Linux命令、编辑器与shell编程》第三版 学习笔记---002
<Linux命令.编辑器与shell编程>第三版 学习笔记---001 Linux命令.编辑器与shell编程 Shell准备 1.识别Shell类型 echo $0 echo $BAS ...
- entityframework学习笔记--005-给code first一个正确的解释
在微软官方关于ef7的介绍中强调,ef7将舍弃database first.model first,只保留code first的使用.这引起了很多人的担忧,担忧源自对code first的错误理解.因 ...
- entityframework学习笔记--004-无载荷与有载荷关系
1.无载荷(with NO Payload)的多对多关系建模 在数据库中,存在通过一张链接表来关联两张表的情况.链接表仅包含连接两张表形成多对多关系的外键,你需要把这两张多对多关系的表导入到实体框架模 ...
- entityframework学习笔记--001
最近想重新好好学习一下entityframework,于是在院子里找到了一篇不错的博客.下面把学习的过程记录下来,方便以后复习. 学习过程参考大神的博客:http://www.cnblogs.com/ ...
- entityframework学习笔记--009-使用原生sql语句操作数据
1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: public class Pay ...
- EntityFramework学习笔记1--安装
1.新建项目 2.工具=>NuGet程序包管理器=>程序包管理控制器 3.PM> Install-Package EntityFramework 安装EF
- entityframework学习笔记--008-实体数据建模基础之继承关系映射TPH
Table per Hierarchy Inheritance 建模 1.让我们假设你有如图8-1中的表,Employee表包含hourly employees 和salaried employees ...
- entityframework学习笔记--007-实体数据建模基础之继承关系映射TPT
Table per Type Inheritance (TPT)建模 1.假设你有两张表与一张公共的表密切相关,如图7-1所示,Businiss表与eCommerce表.Retail表有1:0...1 ...
- entityframework学习笔记--006-表拆分与实体拆分
1.1 拆分实体到多张表 假设你有如下表,如图6-1.Product表用于存储商品的字符类信息,ProductWebInfo用于存储商品的图片,两张表通过SKU关联.现在你想把两张表的信息整合到一个实 ...
随机推荐
- fir.im Weekly - 除了新 MacBook Pro,近期值得关注的移动开发好资源
最近,最引人瞩目的莫过于 Apple 产品发布会,MacBook Pro 的更新可能是四年来变化最大的一版.除了更轻.更薄.性能更好.电力更足之外,最大的变化是加入了Touch Bar,被定义为 Ma ...
- java compiler level does not match the version of the installed java project facet 解决方案
项目出现 java compiler level does not match the version of the installed java project facet 错误,一般是项目移植出现 ...
- Uiautomator 2.0之UiObject2类学习小记
1. 基础动作 1.1. 相关API介绍 API 说明 clear() 清楚编辑框内的内容 click() 点击一个对象 clickAndWait(EventCondition<R> co ...
- VMware 安装虚拟机安装MAC (OSX10_11)
一.简述前言: 1.本案例是基于 VMware Workstation Pro(专业版)12 上创建一个MAC操作系统(版本 :OSX10_11),下面的步骤基本上和安装其他类型的虚拟机没有什么区别. ...
- C#设计模式系列:享元模式(Flyweight)
当频繁地从数据源读取数据时,读出的内容存在重复,那么需要使用享元模式(Flyweight)来提高内存效率,Flyweight模式将节省更多空间,共享的Flyweight越多,空间节省越大. 1.享元模 ...
- CoreData和SQLite多线程访问时的线程安全
关于CoreData和SQLite多线程访问时的线程安全问题 数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常 ...
- OpenCASCADE Quaternion
OpenCASCADE Quaternion eryar@163.com Abstract. The quaternions are members of a noncommutative divis ...
- .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
我不知道人们为什么那么喜欢用HelloWorld来做为自己的第一个程序入门,为什么不是hello **其他的东西或者hi. 一.打开ADT 的Eclipse开发工具新建一个Android项目 New- ...
- 【经验之谈】Git使用之Windows环境下配置
前言 安装 配置 关于git使用的几个问题 后记 关于代码托管,以前用过vss和svn,看博客或论坛的时候,经常有人提到github,有很多著名的开源软件都托管在github,想来肯定不错(莫笑),当 ...
- java中hashMap的排序
hashMap排序,示例: private void test(){ Map<String, List<String>> unSupportedDatesMap=new Has ...