最近做个新项目,要用到MVC及EntityFramework,由于自己从没搞过这个框架及ORM,所以找了些资料看了下,不过网上关于这两个结合使用的资料也不是太多,我也比较笨,别人写的有的也看不大懂。想花钱买相关的书,看到亚马逊上关于EF的书就好几百块一本,还基本是英文的,表示压力真的很大。遂就自己慢慢摸索了几天,简单记 录下 一些心得,也方便要用MVC+EF做项目,却跟我一样有点迷茫的朋友们入门。
工欲善其事,必先利其器。由于需要MVC 3和EntityFramework 4
所以电脑上需装有:
IDE:VisualStudio2010或2012;
数据库:SqlServer.
我用的是VS2012+SqlServer2008,开发语言C#.
首先,打开VS,新建一个MVC项目,如下图:
点击“确定”后弹出界面,选择如下图:
选择Internet应用程序可以方便的提供简单的模板,不要再手工输入了;
视图引擎选择Razor,其语法也比较简单,不知道的可以了解一下MVC3 Razor视图引擎基础语法。
点击"确定",可以看到解决方案中出现了如下文件:
其中Web.config文件是存储的一些Web设置,如应用程序设置,连接字符串等;
Global.asax文件为路由设置文件,其中RegisterRoutes方法设置了URL访问的规则,
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);
}
即:http://主机IP:端口/controller/action/参数的形式,同时它也指定了默认的访问参数,即如果不指定controller和action,就直接输入http://Ip:端口,那么就会访问控制器Controllers文件夹下的HomeController类中的Index方法,然后浏览器返回Index方法中的视图:
直接F5运行项目:
如果手动在地址后面加上/Home/Index即:http://localhost:34979/Home/Index 会看到效果还是和上面一样。
接下来,在项目里新建一个Entities文件夹,用来存放我们将要用到的实体数据模型文件(*.edmx)文件。
新建好文件夹后,右击文件夹新建一个edmx文件(有关edmx文件构成可以百度).
这里取名“Apples.edmx”
点击”添加“,它会要求选择”空模型“还是”从数据库生成“,这里选择”空模型“。
新建好文件后,IDE会默认打开该文件,鼠标右击空白处,新增一个实体,即对应数据库中的一张表
新增表界面如下:
点击确定,完成后就出现了一张实体模型表,右击视图,再为它建几个列:一个是type 字符型,一个是color字符型,一个是price decimal型。类型在标量属性的属性里设置。右击或者F4都可以跳到属性窗口。
设置完成后,鼠标右击空白处,选择”根据模型生成数据库“
选择好数据库名后,点击下一步,直到生成Apples.edmx.sql文件,
IDE会自动打开它,鼠标右击"执行"
显示“已成功完成命令”,到数据库检查一下:
可以看到EF已经自动新建了一张Iphones表,然后手工添加几条记录进去。
然后,再来看一下Entities文件夹下的文件:
这些文件都是IDE自动生成的。
如果有朋友用的是VS2010,那么可能跟只有蓝色的文件,VS2012默认两种文件都生成,但默认只有蓝色直线上方的文件里有内容。
其实只是操作数据库方式略有不同(对应的连接模型是用DbContext还是ObjectContext类)
这个将在下一篇重点介绍.
打开Apples.Context.cs文件,会发现类名就是我们上面设置数据库连接时的名称,也是Web.config文件里的一个配置节点属性值名称,这些都是系统自动帮我们生成的:
public partial class ApplesContainer : DbContext
{
public ApplesContainer()
: base("name=ApplesContainer")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
到这里,准备工作已经差不多了。接下介绍MVC利用EF的增删改查,由于这个页面的图片有点多了,还是分开到另一篇文章里去吧。见MVC+EntityFramework学习笔记二