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"
|
现在来看项目结构,安装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> }
|