[ASP.NET MVC5 - 03] Entity FrameWork and Model
来源:互联网 发布:cohen sutherland算法 编辑:程序博客网 时间:2024/05/20 13:38
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的名字一致。
- [ASP.NET MVC5 - 03] Entity FrameWork and Model
- ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework
- ASP.NET MVC4 Entity Framework and Mysql
- asp .net mvc5 多model传递
- Asp.Net Entity Framework 学习指南
- 译文:使用MVC5的Entity Framework 6入门(七)——为ASP.NET MVC应用程序读取相关数据
- 译文:使用MVC5的Entity Framework 6入门(八)——为ASP.NET MVC应用程序更新相关数据
- 译文:使用MVC5的Entity Framework 6入门(十)——为ASP.NET MVC应用程序处理并发
- 译文:使用MVC5的Entity Framework 6入门(十一)——为ASP.NET MVC应用程序实现继承
- 译文:使用MVC5的Entity Framework 6入门(十二)——为ASP.NET MVC应用程序使用高级功能
- 热门的技术教程!ASP.NET MVC, JQuery, ASP.NET AJAX and ADO.NET Entity Framework
- 热门的技术教程!ASP.NET MVC, JQuery, ASP.NET AJAX and ADO.NET Entity Framework
- ASP.NET 4.0 与 Entity Framework 4-第一篇-采用Model-First 开发方式创建数据库
- ASP.NET 4.0 与 Entity Framework 4-第一篇-采用Model-First 开发方式创建数据库
- ASP.Net MVC开发基础学习笔记(6):Model和Entity Framework
- (03)Entity Framework 6.1-Model First
- Entity Framework Model First
- Entity Framework Model First
- sql中 inner/left/right join on的用法
- windows server 2008系统开启多个远程会话
- 对涂胶工艺认识的误区之八-涂胶机清洗的频率高说明机器不好
- Hadoop InputFormat源码分析
- linux 压缩解压缩命令详解-tar zip rar
- [ASP.NET MVC5 - 03] Entity FrameWork and Model
- 指针操作_1,指针基础Pointer Fundamentals与内存分配storage allocation
- 谁是小偷
- Kmeans聚类
- JAVA 应用 III - 反射机制
- Ubuntu无线网卡驱动安装
- 关于IOC和DI的理解
- LeetCode | #1 Two Sum
- 创建自定义指令[进阶]