MVC項目實例--GuestBook


本節中我們嘗試創建一個MVC應用程序:GuestBook


1創建數據庫

在本例中我們的數據庫采用:SQL Server Compact。SQL Server Compact 是一種嵌入式數據庫引擎,它實現了簡便的數據庫存儲。 它不需要您運行安裝過程或安裝數據庫服務器。 是基於bin發布的,發布時只需要將相應的dll添加到bin目錄即可。更多參照:http://msdn.microsoft.com/zh-cn/library/gg606540.aspx

在項目App_Data目錄選擇“Add”->"New Item", 選擇Sql Server Compact4.0 Local Database,命名為Guestbook.sdf。 SQL Server Compact數據庫文件擴展名為sdf。

在Server Explorer中打開數據庫,並新建表GuestbookEntries.

2 Model

數據庫創建完成以后,接下來創建數據模型GuestbookEntry,並使用EF4.1作為ORM工具。

    public class GuestbookEntry
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string Message { get; set; }

        public DateTime DateAdded { get; set; }
    }

為了使用EF4.1,我們需要添加DbContext類

    public class GuestbookContext:DbContext
    {
        public GuestbookContext() : base("Guestbook") { 
        
        }

        public DbSet<GuestbookEntry> Entries { get; set; }
    }

該類繼承與DbContext,並且使用構造函數鏈將數據庫名傳遞給基類。在應用程序中數據庫名稱是Guestbook.sdf,所以這里將Guestbook作為參數傳遞給基類構造函數。打開Web.Config可以看到默認的數據庫是SQL Server Express,為了使用SQL server Compact,還需要做相應的配置。這里我們使用Nuget自動生成配置。首先在項目的References上右鍵單擊,選擇“Manage NuGet Packages”:

在搜索框中輸入EntitiFrameWork.SqlServerCompact,然后選擇安裝

安裝完成后,將自動配置Web.config,使EF4.1訪問SQL server compact。

Web.config

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="System.Data.SqlServerCe.4.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" 
      description=".NET Framework Data Provider for Microsoft SQL Server Compact"
      type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> </DbProviderFactories> </system.data>

 

 

現在來看項目結構,安裝EntitiFrameWork.SqlServerCompact以后,增加了一個_bin_deployableAssemblies,成為可部署依賴項,包含了使用SQL server compact所需的dll。並在web.config
中自動添加了如上代碼.

3 Controller

新建Controller,命名為GuestbookController

    public class GuestbookController : Controller
    {
        //
        // GET: /Guestbook/
        private GuestbookContext _db = new GuestbookContext();

        public ActionResult Index()
        {
            var mostRecentEntries = (from entry in _db.Entries
                                     orderby entry.DateAdded descending
                                     select entry).Take(20);
            ViewBag.Entries = mostRecentEntries.ToList();
            return View();
        }

        public ActionResult Create() {
            return View();
        }

        [HttpPost]
        public ActionResult Create(GuestbookEntry entry) {
            entry.DateAdded = DateTime.Now;
            _db.Entries.Add(entry);
            _db.SaveChanges();
            return Content("New Entry successfully added.");
        }
    }

在Index中獲取全部的Guestbook實例,並且按時間倒序排列,並將結果保存在ViewBag。第二個Create方法添加了 HttpPost 特性,指明此action只接受用戶通過Post方法發送的表單數據。

4 View

在Controller中右鍵點擊action,創建相應的View文件,Razor具體用法在后面慢慢學習

Create.cshtml
Index.cshtml
@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>
<form method="post" action="">
<fieldset>
Please enter your name: <br />
<input type="text" name="Name" maxlength="200" />
<br /><br />
Please enter your message: <br />
<textarea name="Message" rows="10" cols="40">
</textarea>
<br /><br />
<input type="submit" value="Submit Entry" />
</fieldset>
</form>

 

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<p>
<a href="/Guestbook/Create">Add a new entry</a>
</p>
@foreach (var entry in ViewBag.Entries) {
<section class="contact">
<header>
<h3>@entry.Message</h3>
</header>
<p>
Posted by @entry.Name on @entry.DateAdded.ToLongDateString()
</p>
</section>
}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM