zoukankan      html  css  js  c++  java
  • 学习MVC Part 4 -使用EntityFramework代码优先的方法创建MVC应用程序

    介绍 在我们的前三篇文章中,我们学到了很多关于MVC,从定义开始,从应用程序创建一个MVC应用程序与数据库连接使用不同的技术。 在本系列的最后一部分中,我们学会了如何连接我们的MVC应用程序与现有数据库使用实体框架。 本文将关注使用CodeFirst连接我们的MVC应用程序和数据库的方法,即。之一,微软的实体框架提供的特性。 我们的路线图 提醒我们对学习MVC:完整的路线图 Part1:介绍MVC架构和关注点分离又是;第2部分:创建MVC应用程序从头开始使用LINQ to SQL并连接数据库只第3部分:连接MVC应用程序的帮助下EntityFramework DB-First方法。第4部分:连接MVC应用程序的帮助下EntityFramework优先方法只第5部分:实现存储库模式与EntityFramework MVC应用程序只第6部分:实现一个通用的库模式和单元的工作模式与EntityFramework MVC应用程序只 的必备条件 有几个先决条件,我们从这篇文章开始: 我们,并运行样例应用程序,我们在本系列文章的第三部分中创建。我们有EntityFramework 4.1包或DLL本地文件系统。我们理解MVC应用程序是如何创建的。 优先方法 实现领域驱动设计,实体框架介绍英孚4.1代码。代码中的第一个方法中,我们关注域设计或实体/少类,根据我们的模型创建类的要求。我们没有应用程序的数据库,而我们从代码定义后自动创建数据库域。完全匹配的域创建的数据库设计,所以我们必须非常意识和敏锐的设计我们的域模型。感觉兴奋看到动态创建数据库的帮助下我们的实体和XML配置,甚至没有打开数据库服务器。 没关系,你不是专家数据库,如果你是一个c#开发人员,只关注你的模型/类的创建。EntityFramework将头痛为您创建和管理数据库。 过程 步骤1:打开我们的MVC应用程序创建拷贝学习MVC-Part3 Visual Studio。 我们可以清楚地看到,记住我们曾经的帮助下我们的MVC应用程序连接到数据库实体框架,是的这是edmx类和我们的模型。tt类从edmx生成类。 步骤2:我们不需要现有的数据库,所以您可以删除已经创建了数据库第3部分为我们的应用程序(如果创建)。 步骤3:我们不需要edmx文件现在,我们清洁我们的应用程序中,消灭所有的类。只是删除EFDataModel。edmx Model1.Context。tt和Model1。tt文件。现在请不要运行应用程序。它会给编译时错误,因为我们使用的是这些类;-),我们的解决方案将会看起来像: 老解UserList类模型文件夹,我只有改变类的名称对于区分它与先前的应用程序,在第一部分和可读性。 步骤4:这么简单,只是一个类添加到您的解决方案,并命名为MVCDBContext.cs如下图所示: 第五步:添加System.Data。实体DLL作为参考的解决方案,如果没有补充道。 步骤6:使用名称空间System.Data。DBContext类实体,并从DBContext类,添加的类继承 DbContext类:根据MSDN,在概念上类似于ObjectContext DbContext类。ObjectContext定义,类是EF核心API的一部分在Microsoft . net框架4,这是我们的英雄类,让我们来执行查询,更改跟踪和更新数据库使用强类型类,代表我们的模型(实体类)。暴露的DbContext是ObjectContext包装ObjectContext的最常用的功能以及提供了一些简单的经常使用的“捷径”任务直接与ObjectContext但复杂的代码。Simplfied ObjectContext的替代品,是主要的对象使用一个特定的模型与数据库进行交互。 第七步:添加一个DBSet属性我们创建的DbContext类: 隐藏,复制Code

    public DbSet<User> Users { get; set; }

    尖括号中定义,用户是我们创建的模型,在模型中文件夹,所以我们MVCDBContext类看起来像: 隐藏,复制Code

    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    using LearningMVC.Models;
    
    namespace LearningMVC
    {
        public class MVCDBContext : DbContext
        {
            public DbSet<User> Users { get; set; }
        }
    }

    就是这样,我们90%的工作是做什么? ObjectSet DbSet属性:它是一种简化的替代品,用于执行CRUD操作对一个特定类型的模型。 默认情况下,从而DbContext类将名称的名称将自动创建的数据库,所以要明智地选择上下文类的名称,它可以处理web。配置。 模型的名称表在数据库的名称和属性的模型将表列。 我们的英雄 DbContext和DbSet都是我们的超级英雄,在创建和处理数据库操作,并使我们更抽象,为我们提供了易于使用。 当我们正在与DbContext时,我们在现实与实体集。DbSet代表一个类型的实体集,用于执行创建、读取、更新和删除操作。我们并不创建DbSet对象并独立使用。DbSet只能用于DbContext。 第八步:定义一个网络的连接字符串。配置文件,您可以删除之前定义的连接字符串,新连接字符串将有些看起来像: 连接字符串的名字将我们定义DbContect的名称,即。, MVCDbContext。 步骤9:现在,我们只需要修改控制器的访问方法,早些时候,当我们创建的应用程序在第三部分,我们访问的上下文类modelcontext从edmx文件生成的类。Edmx文件添加引用已经创建的数据库。 但现在的情况是不同的,我们现在没有数据库,我们将访问表和列使用我们MVCDBContext类控制器,所以只是改变以下代码行用于早期应用程序的行为: 隐藏,复制Code

    var dbContext = new MVCEntities() ;
    to
    var dbContext = new MVCDBContext();

    工作。 按F5,你会看到: 应用程序如何运行,数据库在哪里? ?老兄,回到您的数据库服务器,检查数据库: 我们看到我们的数据库创建,名称MVCDB EntityFramework的魔力。现在我们可以执行所有的CRUD操作数据库,使用我们的应用程序。只是创建一个新的用户。 在数据库中,我们看到,用户创建的。 默认情况下,整数属性ID的名称的模型将数据库中的主键,在我们caseUserId,或者你也可以在模型中定义主键。 结论 现在我们知道如何玩EntityFramework创建数据库按我们的域模型从我们的代码,我们已经提前转移到先进的MVC和实体框架的概念。 当我们看到DbContext的定义,它使用了术语库模式和工作单元模式。我们将详细讨论这些更在我的下一篇文章。 编码:快乐), 本文转载于:http://www.diyabc.com/frontweb/news1907.html

  • 相关阅读:
    B-Suffix Array
    1 or 2
    Boundary
    Fake Maxpooling
    Cover the Tree
    Omkar and Circle
    20.5.31
    Yet Another Yet Another Task
    Codeforces Round #373 (Div. 2)E. Sasha and Array +线段树+矩阵快速幂
    2018 Multi-University Training Contest 2(Naive Operations ) hdu6315
  • 原文地址:https://www.cnblogs.com/Dincat/p/13456616.html
Copyright © 2011-2022 走看看