每天学一点,每天积累一点,进步就不止一点点!PS:好记性不如烂笔头,学会总结,学会思考~~~ ----要飞翔,必须靠自己!

灰太狼的梦想

好记性不如烂笔头,学会总结,学会思考~~~

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

原文链接: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默认约定。

 

posted @ 2019-03-29 22:32  灰太狼的梦想  阅读(2228)  评论(0编辑  收藏  举报