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>
}

 

 

 

 

 

转载于:https://www.cnblogs.com/jyan/archive/2012/07/02/2573248.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值