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

 

转载于:https://www.cnblogs.com/zhanghaomars/p/3142691.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET Entity Framework(EF)是微软提供的一种对象关系映射(ORM)框架,用于简化和加速开发者与数据库之间的交互。它允许开发者使用面向对象的方式来操作数据库,而无需直接编写SQL语句。以下是一些与.NET Entity Framework相关的基本知识: 1. 什么是.NET Entity Framework? .NET Entity Framework是一个开源的ORM框架,它允许开发者通过定义实体类和关系来操作数据库。它提供了一个对象关系映射器,可以将数据库表映射到.NET实体类,使开发者可以使用面向对象的思维来操作数据库。 2. Entity Framework有哪些核心组件? Entity Framework包括以下核心组件: - DbContext:表示数据库上下文,用于管理实体对象与数据库之间的交互。 - DbSet:表示数据库中的实体集合,用于查询、插入、更新和删除实体。 - Entity:表示映射到数据库表的实体类。 - LINQ to Entities:用于编写查询语句,将LINQ查询转换为SQL语句并执行。 3. 如何使用Entity Framework进行数据库操作? 使用Entity Framework进行数据库操作通常包括以下步骤: - 定义实体类:创建表示数据库表的实体类。 - 创建DbContext:继承自DbContext的类,表示数据库上下文。 - 配置映射关系:使用Fluent API或属性注解来配置实体类与数据库表之间的映射关系。 - 执行数据库操作:使用DbContext的方法(如SaveChanges、Add、Remove等)来执行对数据库的增删改查操作。 4. Entity Framework支持哪些数据库提供程序? Entity Framework支持多种数据库提供程序,包括SQL Server、MySQL、Oracle、SQLite等。可以根据需要选择合适的数据库提供程序。 5. 如何进行查询操作? 使用Entity Framework可以使用LINQ查询语法或方法链式调用来进行查询操作。通过DbContext的DbSet属性获取实体集合,然后可以使用LINQ查询来过滤、排序和投影数据。 6. 如何进行数据迁移? 数据迁移是Entity Framework提供的一种机制,用于管理数据库结构的变更。可以使用命令行工具或Package Manager Console来创建和应用数据迁移脚本,以保持数据库结构与代码模型的一致性。 .NET Entity Framework是一个功能强大且广泛使用的ORM框架,它简化了与数据库的交互,提高了开发效率。建议深入学习和掌握Entity Framework的各种特性和用法,以便在实际项目中充分发挥其优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值