从零开始高阶.Net Mvc5 EF6 WebApi2 Angular2项目开发(Ch01——2)

序言:众所周知,SinglePage Application是当今比较流行的Web app,本人已经使用mvc5, ef6, webapi2,angular开发一段时间了,不说融会贯通,也算颇有心得吧。之所以现在打算开始写博客,一是为了记录巩固下自己在开发中学习到的东西;二是为了分享给各位广大开发爱好者一起进行沟通学习,毕竟国内的社区真的没有国外的好,希望能够帮到一点,若有任何不足之处,多多指正,多谢。PS:本文是从零开始不断进阶,希望需要的朋友能够多看源码,多按教程写代码,只有动手遇到问题了,才能较快的学习吸收(一开始,我曾看过Angular的书不下3遍,结果一点效果没有,但是当我用Angular开始写项目的时候,就很快能够学习到了,所以请一定要动手操作试着写代码)


二、准备数据层:

  1.安装EntityFramework 6:如下图打开Nuget Console,输入以下指令安装各个库(当然你也可以打开Nuget的面板进行手动操作,搜索库名即可,注意库的安装位置不要有误即可)。指令:

Install-Package EntityFramework Domain
Install-Package EntityFramework WebUI

2.创建DbContext:Domain项目新建Class,命名为TutorialEfDbContext,代码如下:

using System.Data.Entity;
namespace Domain
{
    public class TutorialEfDbContext:DbContext
    {
        // base("TutorialEfDbContext") 比较重要,其中里面的字符串要和config文件中数据库连接字符串的名字一致
        public TutorialEfDbContext():base("TutorialEfDbContext")
        {
            Configuration.ProxyCreationEnabled = false; //disable proxy
            Configuration.LazyLoadingEnabled = false; //disable lazy load
        }
    }
}

 
 

3.项目下新建文件夹Entities, 文件夹内创建第一个Model Student,代码如下(请注意using 引用):

using System.ComponentModel.DataAnnotations;


namespace Domain.Entities
{
    public class Student
    {<span style="white-space:pre">	</span>// 每个Model中必须带有Key属性,代表了数据库中的主键
        [Key]
        public string Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public bool Sex { get; set; }
    }
}

4.在TutorialEfDbContext下添加该Student Model 属性,代码如下:

public DbSet<Student> Student { get; set; }

5.在WebUI项目下的Web.Config文件里添加数据库连接字符串(注意:由于页面大小有限我将connectionString属性值写在了两行,在项目中你必须全部放在一行里)

  //放在<configuration>的里面
  <connectionStrings>
    <add name="TutorialEfDbContext" connectionString="Data Source=(localdb)\mssqllocaldb;Initial Catalog=TutorialEfDbContext;
Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

6.再次打开package manager console面板,首先确保default project是Domain,然后依次输入以下指令:

Enable-Migrations         执行完毕后你会发现Domain中自动添加了Migrations文件夹和一个Configuration文件

Add-Migration Initial      执行完毕后Migrations里会有一个以Initial结尾的C#文件,打开文件你会看到Up和Down方法,分别代表了执行和回滚操作时会执行的代码,即创建Student表和删除Student表

Update-Database -Verbose  执行完毕后打开SqlSever,你会发现数据库中已经帮你创建了TutorialEfDbContext数据库和Students表以及MigrationHistory表




至此EF6 Code First的基本操作已经完毕了,让我一一解释操作中比较重要的点。

首先,Code First的好处在于你只用关心你的项目代码,数据库中表的创建等工作只需要几个简单的步骤就可以同步完成了,省时省力省心,是个很好的开始(至于到底Code First好还是Database First好,这个其实在于个人,你喜欢哪个方式,哪个用的熟练就使用哪个)。

接着,使用Migration是在项目开发中十分重要的,因为当你在现实开发中,你的数据库肯定不会是一层不变的,这个时候如果已经有一些实际数据了,而你又不想删掉这些数据,那么你就需要使用到Migration来更改数据库,这样数据不会丢失(除了删表行为),而DropCreateDatabaseIfModelChanges 等都无法达到以上效果,所以学好Migration也是重要的一个环节,在后面的教程中我将一一介绍出来。


鸣谢:我是一名来自盛安德的Shinetecher,感谢盛安德公司及同事们对IT技术的支持,分享和热情,让我有时间和动力完成此博文。

联系:欢迎各位朋友有任何问题和建议留言至此博客下,或者添加本人微信号:liyijia428 进行沟通交流学习

源码:https://github.com/likeconan/MVC5_EF6_Angular2_WebAPI2



猜你喜欢

转载自blog.csdn.net/likeconan123/article/details/52680298