本節中我們嘗試創建一個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"
|
現在來看項目結構,安裝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> }
|
|
|