文档章节

3.翻译系列:EF Code-First 示例(EF 6 Code-First系列)

o
 osc_w9s1w4o0
发布于 2019/03/29 22:32
字数 1608
阅读 20
收藏 0

精选30+云产品,助力企业轻松上云!>>>

原文链接:http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx

 

EF 6 Code-First系列文章目录:

 

 

在前面一节中,我们学会了怎么,在我们项目中安装Entity Framework。现在我们来创建一个简单的Code-First示例吧:

假定,我们想为XYZ学校创建一个简单的应用程序,使用这个程序来添加、更新学生信息,以及学生分数信息,班级信息还有老师信息。

不像之前传统做法那样,先创建数据库,这里我们为我们的学生创建学生领域类。首先创建Student,以及Grade实体,代码中一个学生实体和一个Grade实体相关联。这被称作为一对多的关系。后面的章节中,我们将会学到EF怎么管理实体之间的关系。

我们创建一个控制台应用程序,安装好EF。

然后创建Student 和Grade类

 public class Student
    {
        /// <summary>
        /// 学生ID
        /// </summary>
        public int StudentID { get; set; }

        /// <summary>
        /// 学生姓名
        /// </summary>
        public string StudentName { get; set; }

        /// <summary>
        /// 出生日期
        /// </summary>
        public DateTime? DateOfBirth { get; set; }

        /// <summary>
        /// 图片
        /// </summary>
        public byte[] Photo { get; set; }

        /// <summary>
        /// 身高
        /// </summary>
        public decimal Height { get; set; }

        /// <summary>
        /// 体重
        /// </summary>
        public float Weight { get; set; }

        /// <summary>
        /// 导航属性--Grade--年级
        /// </summary>
        public Grade Grade { get; set; }
    }
 public class Grade
    {
        public int GradeID { get; set; }

        public string GradeName { get; set; }

        public string Section { get; set; }

        public ICollection<Student> Students { get; set; }
    }

如上,我们创建好了程序的领域类。

Code-First方式,同样还需要一个上下文类,上下文类是继承自DbContext类的类。创建一个上下文类,如下,它继承自DbContext,暴露两个属性Students和Grades.

现在,我们已经创建好了Code-First方式需要的类,现在来测试一下:

 

运行项目:

 

 表示一个学生信息已经成功添加到了数据库中。

但是,数据库在哪里呢?数据表呢?数据列呢?

这就是EF Code-First API 迷人之处。它基于你在上下文类的构造函数中传递的参数,创建数据库。因为这里,我们在上下文类的构造函数中没有传递任何参数,EF 就给我们在这里创建了数据库:

C:\Users\你的计算机名称

这个数据库不能附加,我们可以在配置文件,配置一下:

然后修改一下,上下文类的构造函数:

再运行项目看看:

 

 说明成功创建了数据库,我们看下生成的数据库:

就像上面图形中所示,EF为我们创建了数据库,还创建了相应的数据表,数据列。这样我们就使用Code-First,创建了数据库.

请注意:如果你修改了实体,再运行项目的话,就会报错:例如,我在Student实体中加一个属性Email。

然后运行项目:

 

 出现这个错误,是需要进行数据库迁移。你需要在上下文类中,定义数据库初始化策略,然后修改实体,最后运行项目。数据库迁移技术,我好多系列文章中都讲到了,当然 这个系列还是会告诉大家怎么配置,大家可以到时候好好跟着我巩固一下。

你现在肯定很好奇,EF API是怎么创建合适类型的数据列的,怎么创建主键,怎么创建外键的?答案就是使用Code-First默认的约定配置。下面一节中,我们将学习Code-First默认约定。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
9.6 翻译系列:数据注解之Index特性【EF 6 Code-First系列】

原文链接:https://www.entityframeworktutorial.net/entityframework6/index-attribute-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Code First(EF 6 Code First ......

osc_c438keit
2019/04/09
2
0
9.10 翻译系列:EF数据注解特性之StringLength【EF 6 Code-First系列】

原文链接:https://www.entityframeworktutorial.net/code-first/stringlength-dataannotations-attribute-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Code First(......

osc_0q2mvgjv
2019/04/09
2
0
9.8 翻译系列:数据注解特性之--Required 【EF 6 Code-First系列】

原文链接:https://www.entityframeworktutorial.net/code-first/required-attribute-dataannotations-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Code First(EF 6......

osc_0q2mvgjv
2019/04/09
9
0
9.9 翻译系列:数据注解特性之--MaxLength 【EF 6 Code-First系列】

原文链接:https://www.entityframeworktutorial.net/code-first/maxlength-minlength-dataannotations-attribute-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Cod......

osc_0q2mvgjv
2019/04/09
4
0
18.翻译系列:EF 6 Code-First 中的Seed Data(种子数据或原始测试数据)【EF 6 Code-First系列】

原文链接:https://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Code First(EF 6 Code First 系列) 2.翻......

osc_rx2gh7b8
2019/04/13
1
0

没有更多内容

加载失败,请刷新页面

加载更多

Java知识回顾-基础知识(1)

面向对象和面向过程的区别 1 面向过程性能较高(面向过程语言大多是直接编译成计算机可读的机械码可直接运行) 2 面向对象易维护,易复用,易扩展(因为有封装,继承,多态可设计低耦合系统),面向对...

心田已荒
26分钟前
11
0
Vimium不使用鼠标离开地址栏的方法

使用chrome 的 Vimium 扩展也有很长一段时间了,最大的好处是可以在浏览器使用 vim 下的热键,告别鼠标和触控板也能愉快玩耍。 虽然大部分时间都使用cmd+O打开 URL或者历史,但有时候还是要用...

FalconChen
31分钟前
27
0
数据库周刊31丨openGauss 正式开源;7月数据库排行榜发布;PG解决社保问题;mysqlbinlog解析……

摘要:墨天轮数据库周刊第31期发布啦,每周1次推送本周数据库相关热门资讯、精选文章、干货文档。本周分享 华为openGauss 正式开源;7月数据库排行榜发布;浙江移动国产数据库AntDB迁移;抢鲜...

墨天轮小助手
34分钟前
6
0
婚礼行业小程序新玩法

现在婚礼行业越来越吃香,随之而来的婚庆公司、个人工作室都涌入市场。消费者可选择的越来越多,货比三家。婚礼公司都在绞尽脑汁加大推广力度,做各种优惠活动,来吸引消费者,提升销量。今天...

LOVEer1
36分钟前
9
0
Linux Ubuntu 14 Audit 系统审计服务

一、概述 系统等保要求,必须做系统审计服务,审计的目的是基于事先配置的规则生成日志,记录可能发生在系统上的事件,这里直接使用第三方插件 Audit,不用系统自带的审计服务日志。 (如需要...

华山猛男
46分钟前
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部