3.翻译系列:EF Code-First 示例(EF 6 Code-First系列)
原文链接:http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx 在前面一节中,我们学会了怎么,在我们项目中安装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默认约定。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET和Web Tools 2012.2引用LESS文件
- asp.net – 奇怪的Ajax ComboBox下拉列表
- asp.net-mvc – 在ascx文件中使用Html.RenderPartial()
- asp.net-mvc – 应用程序每15分钟编译一次
- 是否可以首先为ASP.Net或ASP.Net MVC站点创建HTML?
- asp.net – GridView上的滚动条
- asp.net-mvc – MVC导航到不同的控制器视图
- ASP.NET MVC 3静态文件的简单场景授权
- asp.net-mvc – ASP.NET MVC:确保用户始终拥有会话变量集
- asp.net – 如何在.net中读取Elastic Beanstalk环境属性?
- asp.net-mvc – 在Visual Studio 2015中的ASP.NE
- entity-framework – DbContext未在ASP.Net MVC中
- 从ASP.NET MVC2向iPhone提供视频文件
- asp.net文件上传解决方案(图片上传、单文件上传
- asp.net-mvc – DataAnnotations StringLength属
- asp.net – 哪个NuGet包包含System.Web.Routing?
- asp.net – MVC 3部署到IIS6
- asp.net – 从SignalR中的所有组中删除连接
- LoadControl与构造ASP.Net控件
- asp.net-mvc – 在活动的SignalR连接期间更改用户