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

原文: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  打开该数据库就能查看或者修改里面的表和数据等

 

时间: 2025-01-02 10:25:00

Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3的相关文章

sql server express .sdf(SQL Server Compact Edition Database File)文件打开、删除及使用

首先,我们需要知道.sdf是什么?sdf文件是Visual Studio 2010出现一个一个本地化的数据库文件:SQL Server Compact Edition Database File.经验证,这个文件是工程的信息保存成了数据库文件,如果你没有参加大型的团队项目,不涉及到高深的调试过程,这个文件对于你来说没什么用了,可以放心的删除,如果你后来又需要这个文件了,简单,打开工程里的.sln文件重新编译链接就ok了. 官方说明: 文件类型1:SQL Server Compact Databa

Microsoft SQL Server 7.0 的数据迁移到MySQL上的一种方法(转)

mysql|server|数据   想必大家都很喜欢用Word打字,用Excel进行计算和规划,用PowerPoint作幻灯片进行展示-,但是这只用到了Office系列产品的很少的一部分功能.据调查,绝大部分用户只用到了Office产品的20%的功能,很少有人注意到Visual Basic for Application.实际上,熟悉掌握VBA的功能可以使你的工作事半功倍,尤其对会计.金融等专业来说,作出一套好的宏,几乎可以作到一劳永逸!最近,AutoCAD中也加入了VBA的功能,这不能不说这是

用SQL Server CE 2.0和.NET Compact Framework开发……

用SQL Server CE 2.0和.NET Compact Framework开发紧凑而功能强大的移动应用程序 本文假定你熟悉SQL Server和Visual Studio. 概要 开发人员在为移动设备创建解决方案时可以有很多种选择.最大的挑战之一是找到一种既紧凑又健壮的本地存储方案.SQL Server CE 2.0 承诺在产品交付时两者兼备.其最新版本将比以往的版本在特色和性能上都有一个巨大的飞跃.本文将回顾开发人员目前在使用开发平台和开发工具上的一些选择.作者也将比较和总结 SQL

Microsoft SQL Server 7.0安全问题

[「Microsoft SQL Server 7.0」以下简称「SQL Server 7.0」] SQL Server 7.0 有哪几种安全模式? 两种:SQL Server和Windows NT(混合)及Windows NT only.SQL Server 和Windows NT相当于SQL Server 6.5版本的混合模式.Windows NT only相当于SQL Server 6.5 版本的信任模式.在SQL Server 7.0版没有提供相当于SQL Server 6.5版本的标准模

Microsoft SQL Server 7.0数据库升级转换问题

数据库升级转换所需时间? 影响数据库升级转换所需时间的因素很多, 除了硬件的因素外,由于需要重新创建每个SQL Server 6.X的对象,数据库复杂与否也会有影响,一般来说大致的速度如下 数据库大小 估计所需时间 400 MB 少于20分钟 1 GB 少于1小时 5 GB 少于4小时 10 GB 少于12小时 100 GB 少于24小时 升级转换数据库的方法? 在同一台计算机上升级转换数据库:管线(pipeline):所需空间约为原有数据库的1.5 倍,升级转换完成后,如果原来的数据库已不需,

Microsoft SQL Server 7.0储存过程调试指南

server|过程 Microsoft SQL Server 7.0储存过程调试指南  摘要:描述了如何使用Microsoft Visual InterDev的SQL调试器来清除Microsoft SQL Server储存过程中的错误. 使用Visual InterDev清除储存过程和触发器中的错误如果您正在使用Microsoft Visual Studio企业版,Visual InterDev包含有一个SQL调试器.您可以使用它象处理其他脚本或程序一样,清除SQL Server储存过程和触发器

把Oracle数据库移植到Microsoft SQL Server 7.0

oracle|server|数据|数据库  把Oracle数据库移植到Microsoft SQL Server 7.0 摘要:本文是为那些想把自己的Oracle应用程序转换为Microsoft SQL Server应用程序的开发人员编写的.本文描述了一个成功的转换所需要的工具.过程和技术.同时强调了建立高性能.高度并行的SQL Server应用程序的基本的设计要素. 本文的读者应该具有: Oracle关系型数据管理系统(RDBMS)的坚实基础. 普通数据库管理知识. 熟悉Oracle SQL和P

将Access数据库移植到Microsoft SQL Server 7.0

access|server|数据|数据库 摘要:本文描述了将Access数据库转换到SQL Server 数据库的过程和工具 简介随着用户对于企业级高性能数据库的需求的增长,用户时常要从Microsoft Access Jet引擎的文件-服务器环境下转换到Microsoft SQL Server的客户-服务器环境.Microsoft Office 2000中的Access 2000 Upsizing Wizard可实现将数据表和查询转移到SQL Server 7.0中.如果您用的是Access的

无效的连接字符串属性-Microsoft SQL Server Native Client 10.0 错误 &amp;amp;#39;80004005&amp;amp;#39; 错误 困扰好几天了

问题描述 Microsoft SQL Server Native Client 10.0 错误 '80004005' 错误 困扰好几天了 Microsoft SQL Server Native Client 10.0 错误 '80004005' 无效的连接字符串属性 conn.asp,行 22 Provider 错误 '80004005' 未指定的错误 这样的错误 有谁见过吗 请高手指点一下 QQ: 1379918820