[ASP.NET MVC5 - 03] Entity FrameWork and Model

       ASP.NET MVC5 的模型指的是实体类。实体类默认对应着数据库的表。数据库表的每一条记录,原则上可以映射成若干个类的对象实例。在应用程序运行过程中,可能有新的实例生成,需要转换为数据库的记录插入到数据库中,也可能需要删除对象,当然也有可能需要更新对象的属性值。这些操作的结果就是对象的属性值或者对象本身发生了变化,需要将这种变化同步到数据库里面去。从MVC的角度来说,V是视图,肯定不可能来解决对象和数据库之间的同步问题,C是控制器,是负责请求的流转,也不可能来负责这个任务,唯一可能负责这个任务就是模型了,也就是说模型是“自治”的模型。模型不仅包含对象的属性,还要负责将自己的变化同步到数据库。

       那么将变化同步到数据库这个功能由谁来实现呢?这时候就有了Entity FrameWork. EF所做的事情就是管理这些事情。在使用EF的时候,有两种方式可供选择,一种是先写代码,后创建数据库(CodeFirst),另外一种就是先创建数据库,然后再写代码。通常来说,我们是先写代码。那么这个时候,我们都是如何来做的呢?假设我们有如下类:

using System;

namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

这是一个纯实体类,那么我们如何使用Entity FrameWork来实现对对象的管理呢?

public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
}

这是一个继承自DBContext的类,这个类的作用顾名思义,就是负责Movie这个实体类与数据库的上下文的维护的。

从整个文件来看,结构如下:

using System;
using System.Data.Entity;

namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }

    public class MovieDBContext : DbContext
    {
        public DbSet<Movie> Movies { get; set; }
    }
}

注意,我们需要添加System.Data.Entity的引用。这时候,MovieDBContext就可以负责连接到数据库,将对象映射到数据库的表。EF默认连接到的是LocalDB,这个数据库是轻量级的SQL Server Express 引擎。这个数据库的特别之处在于,你连接到的是一个.mdf文件,通常位于app_data目录下。对于企业级应用不建议使用localDB的方式,因为不支持IIS,但是LocalDB能够很方便地迁移到SQL Server 或者 SQL Azure。对于VS2012和VS2013,LocalDB是默认安装的。

可以针对MovieDBContext配置数据库连接字符串,示例如下:

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcMovie-20130603030321.mdf;Initial Catalog=aspnet-MvcMovie-20130603030321;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="MovieDBContext"    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient"
/>

注意,name需要和DBContext的名字一致。




 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值