你的位置:首页 > ASP.net教程

[ASP.net教程]ASP.NET MVC——CodeFirst开发模式


    Entity Framework框架提供了几种开发模式,比如Database First,Model First,Code First。我们今天要讲的就是Code First(代码先行)。它思想就是先定义模型中的类,再通过这些类生成数据库。这种开发模式适合于全新的项目,它使得我们可以以代码为核心进行设计而不是先构造数据库。

    接下来我就以一个简单的例子来介绍这种开发模式。我们的需求是两个表,博客表和评论表。一个博客对应多个评论,一个评论对应一个博客。这是一对多关系。我们先新建一个ASP.NET MVC项目,并用NuGet安装EntityFramework。

  public class Blog  {    [Key]    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]    public Guid Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }    public DateTime Time { get; set; }    public string Summary { get; set; }    public string Content { get; set; }    public virtual ICollection<Comment> Comments { get; set; } = new List<Comment>();  }

  public class Comment  {    [Key]    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]    public Guid Id { get; set; }    public string VisitorName { get; set; }    public string Email { get; set; }    public DateTime Time { get; set; }    public string Content { get; set; }    [ForeignKey("Blog")]    public Guid BlogId { get; set; }    public virtual Blog Blog { get; set; }  }

    接下来我们创建数据上下文。新建一个文件夹叫Context,并在其中新建类,代码如下:

  public class EFDbContext : DbContext  {    public DbSet<Blog> Blogs { get; set; }    public DbSet<Comment> Comments { get; set; }    protected override void OnModelCreating(DbModelBuilder modelBuilder)    {      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //去除“设置表名为复数”这条约定    }  }

    接着我们在Web.config中来配置数据库,我们使用轻量级的LocalDB。在Web.config中的<configuration>节点中加入如下配置

 <connectionStrings>  <add name="EFDbContext" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blog;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>