首页 > 数据库技术 > 详细

Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3

时间:2014-02-26 23:42:10      阅读:1075      评论:0      收藏:0      [点我收藏+]
原文:Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3

最近重新查看微软MvcMusicStore-v3.0的源代码,发现忽略了很多重要的东西,特别是数据访问那一部分。

首先Microsoft SQL Server Compact 4.0 详细的介绍和下载地址 链接:http://www.microsoft.com/zh-cn/download/details.aspx?id=17876

Microsoft SQL Server Compact 4.0 是一种免费的嵌入式数据库,软件开发人员可以使用它来构建 ASP.NET 网站和 Windows 桌面应用程序。SQL Server Compact 4.0 的优点是:占用的空间小,支持在应用程序文件夹中专门部署其二进制文件,轻松地使用 Visual Studio 和 WebMatrix 进行应用程序开发,以及无缝地将架构和数据迁移到 SQL Server。

为什么会想要用Microsoft SQL Server Compact 4.0这个嵌入式的数据库,是用为有时为了查看或者实现一些简单的效果,又不得不装SQL Server 2008或者2010很麻烦,而Microsoft SQL Server Compact 4.0建立的以.sdf的数据库文件就没有这些限制所以.........

其次是SQL Server Compact Toolbox  这个VS的扩展插件也是无意中发现,使用它可以创建SQL Server Compact 4.0的.sdf数据库文件,不过我现在也只知道使用sql 语句建立表和增删查改等操作,还需进一步学习........

bubuko.com,布布扣

根据图中所示,安装完成后重启VS就可以在菜单的工具中找打,并打开使用。

最后是ADO.NET Entity Framework 4.1  下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=8363

下载安装后,在项目中引用后即可使用

bubuko.com,布布扣

这里EF的具体教程就不多说了,博客园一搜一大堆。

示例项目如下:

bubuko.com,布布扣

1、在Web.config中配置如下:

  <connectionStrings>
    <add name="MyStoreEntities"
     connectionString="Data Source=|DataDirectory|MyShop.sdf"
     providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

注意,这里数据库连接串的名称很重要,以后使用 EF Code-First 的时候,通过它来找到数据库,这里的链接串种使用了 Data Source=|DataDirectory|MvcMusicStore.sdf,这里的 DataDirectory 指的就是项目中的 App_Data 文件夹夹。如果项目中没有App_Data就需要先建立该文件夹。

2、建立实体类

Administrator.cs

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace EntityFramerwork.Models
{
    [Bind(Exclude = "AdministratorID")]
    public class Administrator
    {
        public int AdministratorID {get;set;}
        public string AdministratorName {get;set;}
        public string AdministratorPassword { get; set; }
    }
}
bubuko.com,布布扣

Classification.cs

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace EntityFramerwork.Models
{
    [Bind(Exclude = "ClassificationID")]
    public class Classification
    {
        public int ClassificationID {get;set;}
        public string ClassificationName { get; set; }
        public int ClassificationParentID {get;set;}
    }
}
bubuko.com,布布扣


Commodity.cs

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace EntityFramerwork.Models
{
    [Bind(Exclude = "CommodityID")]
    public class Commodity
    {
        public int CommodityID {get;set;}
        public string CommodityName {get;set;}
        public decimal CommodityPrice { get; set; }
        public int ClassificationID {get;set;}
        public string CommodityIntroduction {get;set;}
    }
}
bubuko.com,布布扣

 MyStoreEntities.cs(这个类很重要,它的名字一定要同配置文件中add name="MyStoreEntities"的name一样)

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace EntityFramerwork.Models
{
    public class MyStoreEntities : DbContext
    {
        public DbSet<Administrator> Administrators { get; set; }
        public DbSet<Classification> Classifications { get; set; }
        public DbSet<Commodity> Commoditys { get; set; }
    }
}
bubuko.com,布布扣

这个类继承了DbContext类,对于这个类还没有深入了解.....

该示例项目中Administrators,Classifications,Commoditys这三个名称就是生成MyShop.sdf文件数据库的中的表名。

SampleData.cs(这个类用于在文件数据库创建前初始化一些数据,以便程序中使用)

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace EntityFramerwork.Models
{
    public class SampleData : DropCreateDatabaseIfModelChanges<MyStoreEntities>
    {
        protected override void Seed(MyStoreEntities context)
        {
            new List<Administrator>
            {
                new Administrator { AdministratorName = "Rock",AdministratorPassword="123" },
                new Administrator { AdministratorName = "Jazz",AdministratorPassword="1234" }
            }.ForEach(a => context.Administrators.Add(a));

            var classifications = new List<Classification>
            {
                new Classification{ClassificationName="服饰",ClassificationParentID=0},
                new Classification{ClassificationName="男装",ClassificationParentID=1},
                new Classification{ClassificationName="女装",ClassificationParentID=1},
                new Classification{ClassificationName="T恤",ClassificationParentID=2},
                new Classification{ClassificationName="衬衫",ClassificationParentID=2},
                new Classification{ClassificationName="卫衣",ClassificationParentID=3},
                new Classification{ClassificationName="运动服",ClassificationParentID=3}
            };
            classifications.ForEach(b => context.Classifications.Add(b));
        }
    }
}
bubuko.com,布布扣

3、在程序启动时建立文件数据库

Global.asax.cs中的 Application_Start()中加上红色那句代码

        protected void Application_Start()
        {
            System.Data.Entity.Database.SetInitializer(new EntityFramerwork.Models.SampleData());

            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

4、Controllers中的调用如下:

bubuko.com,布布扣
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace EntityFramerwork.Controllers
 8 {
 9     public class HomeController : Controller
10     {
11         public ActionResult Index()
12         {
13             ViewBag.Message = "欢迎使用 ASP.NET MVC!";
14             Models.MyStoreEntities mystoryentity = new Models.MyStoreEntities();
15             var administrator = mystoryentity.Administrators.ToList();
16             return View(administrator);
17         }
18 
19         public ActionResult About()
20         {
21             return View();
22         }
23     }
24 }
bubuko.com,布布扣

主要就是红色那两句代码

5、cshtml中的代码:

 

bubuko.com,布布扣
@model IEnumerable<EntityFramerwork.Models.Administrator>
@{
    ViewBag.Title = "主页";
}

<h2>@ViewBag.Message</h2>
<ul>
    @foreach (var ad in Model)
    {
        <li>@ad.AdministratorID</li>
        <li>@ad.AdministratorName</li>
        <li>@ad.AdministratorPassword</li>
    }
</ul>
bubuko.com,布布扣

 

这样就可以了,运行代码,就可以在App_Data中生成一个名为MyShop.sdf的数据库文件,使用SQL Server Compact Toolbox  打开该数据库就能查看或者修改里面的表和数据等

bubuko.com,布布扣

 

Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3,布布扣,bubuko.com

Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3

原文:http://www.cnblogs.com/lonelyxmas/p/3568492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!