zoukankan      html  css  js  c++  java
  • 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 语句建立表和增删查改等操作,还需进一步学习........

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

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

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

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

    示例项目如下:

    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

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

    Classification.cs

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


    Commodity.cs

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

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

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

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

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

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

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

    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中的调用如下:

     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 }

    主要就是红色那两句代码

    5、cshtml中的代码:

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

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

  • 相关阅读:
    Hibernate 基于外键的双向一对一关联映射
    Hibernate 基于外键的单项一对一关联映射
    Hibernate inverse
    Hibernate cascade
    Hibernate 双向一对多的关联映射
    Hibernate 单项一对多的关联映射
    (转)关闭iptables和SELinux
    linux下大于2T的硬盘格式化方法
    lsusb命令
    CentOS最小化安装后启用无线连接网络
  • 原文地址:https://www.cnblogs.com/zhanghaomars/p/3142691.html
Copyright © 2011-2022 走看看