源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

一个简单MVC5 + EF6示例分享

  • 时间:2021-04-11 08:56 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:一个简单MVC5 + EF6示例分享
本文所使用的软件及环境: Visual Studio Ultimate 2013; MVC5 + EF6 + .NET Framework 4.5 + LocalDB;Windows 7 x64 Professional [b]说明:[/b] 1.在[i]EF[/i] ([i]Entity Framework[/i],以下简称[i]EF6[/i])框架下,操作数据的方式有三种:[i]Database First, Model First[/i], 以及 [i]Code First[/i],本文基于[i]Code First[/i]创建。 2.本文是基于[i]MVC5[/i]创建[i]:[/i] [i]3.LocalDB[/i] [list] [*][i]LocalDB[/i]是[i]SQL Server Express[/i]数据库引擎的轻量级版本,其非常易于安装、配置、以命令行启动并运行在[i]user model.[/i][/*] [*][i]LocalDB[/i]以一种[i]SQL Server Express[/i]特殊的执行模型运行,从而使得你能够以[i].mdf[/i]文件的方式来操作数据库。如果你想使得数据库具有随项目迁移的能力,你可以把[i]LocalDB[/i]数据库文件放在[i]web[/i]项目的[i]App_Data[/i]文件夹下。[/*] [*]在[i]SQL Server Express[/i]中虽然你能够通过使用用户示例功能来达到操作[i].mdf[/i]文件的目的,但是这种做法是不推荐的,相反,[i]LocalDB[/i]是被推荐的方式。在[i]Visual Studio[/i][i]2012[/i]及随后的版本中,[i]LocalDB[/i]随[i]Visual[/i] Studio一起默认安装的。[/*] [*]通常来说SQL[i] Server Express[/i]并不会被用于[i]Web[/i]应用程序的生产环境,同样地,[i]LocalDB[/i]由于其并不是针对[i]IIS[/i]而设计的也不被推荐使用于生产环境。[/*] [/list] [b]一、创建基于[i]MVC[/i][i]Web Application[/i][/b]   在正式开始之前,先看一下[i]VS 2013[/i]的启动界面,是不是有点冷酷的感觉 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100105_0_86951.png[/img] 好了,言归正传,首先按如下截图创建 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100105_1_193.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100106_2_84961.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100106_3_74896.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100107_4_27411.png[/img] 创建完成后,我们对网站的风格做些微调,以便能契合应用主题 [i]ViewsShared_Layout.cshtml[/i]做如下更改(请看黄色高亮部分)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Contact</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Contact", "Index", "Home", null, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contacts", "Index", "Contact")</li>
<li>@Html.ActionLink("Groups", "Index", "Group")</li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - Contact</p>
</footer>
</div>

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>

ViewsHomeIndex.cshtml 替换成如下内容


@{
ViewBag.Title = "Home Page";
}

<div class="jumbotron">
<h1>Contact</h1>
</div>
<div class="row">
<div class="col-md-4">
<h2>Welcome to Contact</h2>
<p>
Contact is a sample application that
demonstrates how to use Entity Framework 6 in an
ASP.NET MVC 5 web application.
</p>
</div>
<div class="col-md-4">
<h2>Build it from scratch</h2>
<p>You can build the application by following the steps in the tutorial series on the following site.</p>
<p><a class="btn btn-default" href="http://www.cnblogs.com/panchunting/p/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application.html">See the tutorial »</a></p>
</div>
</div>
运行看一下效果吧 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100107_5_8571.png[/img] 安装EF6 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100107_6_76344.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100108_7_96906.png[/img] [b]创建数据模型[/b] 在[i]Models[/i]文件夹下,分别创建[i]Contact.cs、Enrollment.cs、Group.cs[/i]三个类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PCT.Contact.Models
{
 public class Contact
 {
  public int ID { get; set; }
  public string Name { get; set; }
  public DateTime EnrollmentDate { get; set; }
  public virtual ICollection<Enrollment> Enrollments { get; set; }
 }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PCT.Contact.Models
{
 public class Enrollment
 {
  public int EnrollmentID { get; set; }
  public int ContactID { get; set; }
  public int GroupID { get; set; }
  public virtual Contact Contact { get; set; }
  public virtual Group Group { get; set; }
 }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PCT.Contact.Models
{
 public enum GroupName
 {
  Friend, Family, Colleague, Schoolmate, Stranger
 }

 public class Group
 {
  public int GroupID { get; set; }
  public GroupName? GroupName { get; set; }
  public virtual ICollection<Enrollment> Enrollments { get; set; }
 }
}
[i]PS[/i]:发现[i]VS 2013[/i]有一个自动提示[i]reference[/i],是不是很方便啊 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100108_8_80477.png[/img] 创建[i]Database Context[/i] [i]  [/i]在[i]PCT.Contact[/i]项目下新建文件夹[i]DAL(Data Access Layer)[/i],继而继续新建[i]CommunicationContext.cs[/i] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100109_9_68431.png[/img]   悲剧啊,由于类Contact和项目名称Contact重复,不得不写全称啊,以后注意。   继续在[i]DAL[/i]目录下创建[i]CommunicationInitializer.cs[/i] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100109_10_3984.png[/img]   为了通知[i]EF[/i]使用你创建的[i]initializer class,[/i]在项目的[i]web.config[/i]中添加[i]entityFramework[/i]节点
 <entityFramework>
 <contexts>
  <context type="PCT.Contact.DAL.CommunicationContext, PCT.Contact">
  <databaseInitializer type="PCT.Contact.DAL.CommunicationInitializer, PCT.Contact" />
  </context>
 </contexts>
 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
 <providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
 </providers>
 </entityFramework>
在项目[i]web.config[/i]中添加[i]connectionstrings[/i](在[i]appSettings[/i]之上)
 <connectionStrings>
 <add name="CommunicationContext" connectionString="Data Source=(LocalDb)v11.0;Initial Catalog=ContactCommunication;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
 </connectionStrings>
 
 <appSettings>
 <add key="webpages:Version" value="3.0.0.0" />
 <add key="webpages:Enabled" value="false" />
 <add key="ClientValidationEnabled" value="true" />
 <add key="UnobtrusiveJavaScriptEnabled" value="true" />
 </appSettings>
  [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100110_11_61606.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100110_12_20278.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100110_13_36963.png[/img] 运行结果 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100112_14_60009.png[/img] 查看[i]LocalDB[/i] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100112_15_44428.png[/img] 希望本文可以对大家学习有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部