最近重新查看微软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="" },
new Administrator { AdministratorName = "Jazz",AdministratorPassword="" }
}.ForEach(a => context.Administrators.Add(a)); var classifications = new List<Classification>
{
new Classification{ClassificationName="服饰",ClassificationParentID=},
new Classification{ClassificationName="男装",ClassificationParentID=},
new Classification{ClassificationName="女装",ClassificationParentID=},
new Classification{ClassificationName="T恤",ClassificationParentID=},
new Classification{ClassificationName="衬衫",ClassificationParentID=},
new Classification{ClassificationName="卫衣",ClassificationParentID=},
new Classification{ClassificationName="运动服",ClassificationParentID=}
};
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中的调用如下:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace EntityFramerwork.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "欢迎使用 ASP.NET MVC!";
14 Models.MyStoreEntities mystoryentity = new Models.MyStoreEntities();
15 var administrator = mystoryentity.Administrators.ToList();
return View(administrator);
} public ActionResult About()
{
return View();
}
}
}

主要就是红色那两句代码

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

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

  1. sql server 小技巧(8) visual studio 2013里使用Sql server compact 4.0及发布问题处理

    1. 安装 Microsoft SQL Server Compact 4.0  https://www.microsoft.com/zh-cn/download/confirmation.aspx?i ...

  2. Sql Server Compact 4.0数据库部署安装

    Sql Server Compact 4.0相比3.5版本增强了很多,支持Entity Framework 4.1,对于轻量级应用来讲,使用Sql Server Compact 4.0是个很好的选择, ...

  3. 解决VS2010在新建实体数据模型出现“在 .NET Framework Data Provider for Microsoft SQL Server Compact 3.5 中发生错误。请与提供程序供应商联系以解决此问题。”的问题

    最近想试着学习ASP.NET MVC,在点击 添加--新建项--Visual C#下的数据中的ADO.NET 实体数据模型,到"选择您的数据连接"时,出现错误,"在 .N ...

  4. VS2010 使用 EntityFramework For SQL Server Compact 4.0

    1.安装 SSCERuntime_x64-ENU.exe 或 SSCERuntime_x86-ENU.exe 2.安装 SSCEVSTools-CHS.msi 3.然后就可以通过 SQL Server ...

  5. 在Visual Studio 2013里使用 Microsoft SQL Server Compact Edition

    (1)下载SQLCE组件 https://www.microsoft.com/en-us/download/details.aspx?id=17876 (2)下载VS2013工具设计器 https:/ ...

  6. 在 .NET Framework Data Provider for Microsoft SQL Server Compact 3.5 中发生错误

    32位机器删除 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\version\DataProviders\{7C602B5B-ACCB-4acd ...

  7. vs2010 打包 SQL server compact 4.0 驱动程序

    sqlce 3.5应该是.net3.5环境下的.不知道最初的时候数据库的创建是用的3.5还是4.0 .这两天测试的时候,将4.0卸载了.就运行不上.报错为“未能加载文件或程序集“System.Data ...

  8. 解决vs2010“创建或打开C++浏览数据库文件 发生错误”的问题 Microsoft SQL Server Compact 3.5

    有网友说打开vs2010安装光盘,搜索 SSCERuntime_x86-chs.msi,重新安装之.于是果断搜索,发现SSCERuntime_x86-chs.msi,另外发现一个SSCEVSTools ...

  9. Unable to open connection to "Microsoft SQL Server, provider V1.0.5000.0 in framework

    解决办法:1 以管理员身份登陆2 找到ORACLE_HOME文件夹(D:\oracle\ora92),点右键,选属性——安全,在组或用户栏中选"Authenticated Users&quo ...

随机推荐

  1. ng-表单验证

    表单验证<AngularJs>   常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type ...

  2. java中异常注意的细节2

    class A extends Exception{ A(){ super(); } A(String msg){ super(msg); } } class B extends A{ B(){ su ...

  3. javaweb -- 获取请求IP(附实现源码)

    实现步骤如下: (1)新建一个java web工程 (2)新建servers包,新建类GetRequestIp,用来处理获取请求IP,GetRequestIp类完整代码如下: package serv ...

  4. C#基础-----面向对象

    C#基础-----面向对象(一) 分类: C#基础2015-06-08 14:10 2人阅读 评论(0) 收藏 举报 1,面向对象 什么是面向对象?一个分析问题的方式(增强了程序的可扩展性) 几个名词 ...

  5. Deep learning:四十四(Pylearn2中的Quick-start例子)

    前言: 听说Pylearn2是个蛮适合搞深度学习的库,它建立在Theano之上,支持GPU(估计得以后工作才玩这个,现在木有这个硬件条件)运算,由DL大牛Bengio小组弄出来的,再加上Pylearn ...

  6. Hadoop阅读笔记(四)——一幅图看透MapReduce机制

    时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过, ...

  7. springmvc学习笔记--mybatis--使用插件自动生成实体和mapper

    由于表对象在开发过程中会增删字段,有时候需要重新生成实体和对应的mapper,这时候可以通过mybatis的插件的生成. 优点是快速简洁,缺点同样很明显:覆盖.因此,通常是在第一次搭建框架的时候使用, ...

  8. 20个设计精致的用户界面 PSD 源文件免费下载

    今天这篇文章收集了20个新鲜出炉的用户界面 PSD 源文件素材,你可以免费下载使用.这些免费素材不仅能帮助设计师们节省大量的时间,而且能有很好的效果.感谢那些很有才华的设计师分享它们的劳动成果,让更多 ...

  9. SQL Server存储(6/8) :理解DCM页

    我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map:DCM ),还有差异备份(differen ...

  10. l5如何通过路由走api版本回退查找设置

    l5如何通过路由走api版本回退查找设置 具体需求 当前遇到的问题是使用laravel写接口,但是接口是有版本号的,我们把版本号放在url中,比如: http://yejianfeng.com/api ...