MVC5 + EF6 簡單示例

  

此文章原做者:舍長css

此文章原地址:http://panchunting.cnblogs.com/html

  本文所使用的軟件及環境:

  說明:jquery

  1. EF (Entity Framework,如下簡稱EF6)框架下,操做數據的方式有三種:Database First, Model First, 以及 Code First,本文基於Code First建立。更多關於EF6請參考 http://msdn.microsoft.com/en-us/data/ef.aspx;
  2. 本文是基於MVC5建立,更多關於其說明與使用請參考 http://www.asp.net/mvc;
  3. LocalDB:
    • LocalDBSQL Server Express數據庫引擎的輕量級版本,其很是易於安裝、配置、以命令行啓動並運行在user model.
    • LocalDB以一種SQL Server Express特殊的執行模型運行,從而使得你可以以.mdf文件的方式來操做數據庫。若是你想使得數據庫具備隨項目遷移的能力,你能夠把LocalDB數據庫文件放在web項目的App_Data文件夾下。
    • SQL Server Express中雖然你可以經過使用用戶示例功能來達到操做.mdf文件的目的,可是這種作法是不推薦的,相反,LocalDB是被推薦的方式。在Visual Studio 2012及隨後的版本中,LocalDBVisual Studio一塊兒默認安裝的。
    • 一般來講SQL Server Express並不會被用於Web應用程序的生產環境,一樣地,LocalDB因爲其並非針對IIS而設計的也不被推薦使用於生產環境。

 

1、建立基於MVC Web Applicationweb

  在正式開始以前,先看一下VS 2013的啓動界面,是否是有點冷酷的感受數據庫

  好了,言歸正傳,首先按以下截圖建立bootstrap

   建立完成後,咱們對網站的風格作些微調,以便能契合應用主題mvc

  Views\Shared\_Layout.cshtml 作以下更改(請看黃色高亮部分)app

複製代碼
<!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>&copy; @DateTime.Now.Year - Contact</p>
        </footer>
    </div>

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

  Views\Home\Index.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 &raquo;</a></p>
    </div>
</div>
複製代碼

  運行看一下效果吧asp.net

安裝EF6

建立數據模型

Models文件夾下,分別建立Contact.cs、Enrollment.cs、Group.cs三個類

複製代碼
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; }
    }
}
複製代碼

 

  PS:發現VS 2013有一個自動提示reference,是否是很方便啊

建立Database Context

  PCT.Contact項目下新建文件夾DAL(Data Access Layer),繼而繼續新建CommunicationContext.cs

 

  悲劇啊,因爲類Contact和項目名稱Contact重複,不得不寫全稱啊,之後注意。

  繼續在DAL目錄下建立CommunicationInitializer.cs

 

  爲了通知EF使用你建立的initializer class,在項目的web.config中添加entityFramework節點 

複製代碼
  <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>
複製代碼

設置EF使用SQL Server Express LocalDB database

  在項目web.config中添加connectionstrings(在appSettings之上)

複製代碼
  <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>
複製代碼

建立Contact的控制器和視圖

  

運行結果

查看LocalDB

此文章原做者:舍長

此文章原地址:http://panchunting.cnblogs.com/

相關文章
相關標籤/搜索