https://docs.microsoft.com/en-us/aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/create_the_data_access_layer

This tutorial describes how to create, access, and review data from a database using ASP.NET Web Forms and Entity Framework Code First.

This tutorial builds on the previous tutorial "Create the Project" and is part of the Wingtip Toy Store tutorial series.

When you've completed this tutorial, you will have built a group of data-access classes that are in the Models folder of the project.

What you'll learn:

  • How to create the data models.
  • How to initialize and seed the database.
  • How to update and configure the application to support the database.

These are the features introduced in the tutorial:

  • Entity Framework Code First
  • LocalDB
  • Data Annotations

Creating the Data Models

Entity Framework is an object-relational mapping (ORM) framework.

It lets you work with relational data as objects, eliminating most of the data-access code that you'd usually need to write.

Using Entity Framework, you can issue queries using LINQ, then retrieve and manipulate data as strongly typed objects.

LINQ provides patterns for querying and updating data.

Using Entity Framework allows you to focus on creating the rest of your application, rather than focusing on the data access fundamentals.

Later in this tutorial series, we'll show you how to use the data to populate navigation and product queries.

Entity Framework supports a development paradigm called Code First.

Code First lets you define your data models using classes.

A class is a construct that enables you to create your own custom types by grouping together variables of other types, methods and events.

You can map classes to an existing database or use them to generate a database.

In this tutorial, you'll create the data models by writing data model classes.

Then, you'll let Entity Framework create the database on the fly from these new classes.

You will begin by creating the entity classes that define the data models for the Web Forms application.

Then you will create a context class that manages the entity classes and provides data access to the database.

You will also create an initializer class that you will use to populate the database.

Entity Framework and References

By default, Entity Framework is included when you create a new ASP.NET Web Application using the Web Forms template.

Entity Framework can be installed, uninstalled, and updated as a NuGet package.

This NuGet package includes the following runtime assemblies within your project:

  • EntityFramework.dll – All the common runtime code used by Entity Framework
  • EntityFramework.SqlServer.dll – The Microsoft SQL Server provider for Entity Framework

Entity Classes

The classes you create to define the schema of the data are called entity classes.

If you're new to database design, think of the entity classes as table definitions of a database.

Each property in the class specifies a column in the table of the database.

These classes provide a lightweight, object-relational interface between object-oriented code and the relational table structure of the database.

In this tutorial, you'll start out by adding simple entity classes representing the schemas for products and categories.

The products class will contain definitions for each product.

The name of each of the members of the product class will be ProductIDProductNameDescriptionImagePathUnitPriceCategoryID, and Category.

The category class will contain definitions for each category that a product can belong to, such as Car, Boat, or Plane.

The name of each of the members of the category class will be CategoryIDCategoryNameDescription, and Products.

Each product will belong to one of the categories.

These entity classes will be added to the project's existing Models folder.

1.In Solution Explorer, right-click the Models folder and then select Add -> New Item.

2.Under Visual C# from the Installed pane on the left, select Code.

3.Select Class from the middle pane and name this new class Product.cs.

4.Click Add.
          The new class file is displayed in the editor.

5.Replace the default code with the following code:

6.Create another class by repeating steps 1 through 4, however,

name the new class Category.cs and replace the default code with the following code:

As previously mentioned, the Category class represents the type of product that the application is designed to sell (such as "Cars", "Boats", "Rockets", and so on),

and the Product class represents the individual products (toys) in the database.

Each instance of a Product object will correspond to a row within a relational database table, and each property of the Product class will map to a column in the relational database table.

Later in this tutorial, you'll review the product data contained in the database.

Data Annotations

You may have noticed that certain members of the classes have attributes specifying details about the member, such as [ScaffoldColumn(false)].

These are data annotations.

The data annotation attributes can describe how to validate user input for that member, to specify formatting for it, and to specify how it is modeled when the database is created.

Context Class

To start using the classes for data access, you must define a context class.

As mentioned previously, the context class manages the entity classes (such as the Product class and the Category class) and provides data access to the database.+

This procedure adds a new C# context class to the Models folder.

1.Right-click the Models folder and then select Add -> New Item.
The Add New Item dialog box is displayed.

2.Select Class from the middle pane, name it ProductContext.cs and click Add.

3.Replace the default code contained in the class with the following code:

This code adds the System.Data.Entity namespace so that you have access to all the core functionality of Entity Framework, which includes the capability to query, insert, update, and delete data by working with strongly typed objects.

The ProductContext class represents Entity Framework product database context, which handles fetching, storing, and updating Product class instances in the database.

The ProductContext class derives from the DbContext base class provided by Entity Framework.

Initializer Class

You will need to run some custom logic to initialize the database the first time the context is used.

This will allow seed data to be added to the database so that you can immediately display products and categories.

This procedure adds a new C# initializer class to the Models folder.+

1.Create another Class in the Models folder and name it ProductDatabaseInitializer.cs.

2.Replace the default code contained in the class with the following code:

As you can see from the above code, when the database is created and initialized, the Seed property is overridden and set.

When the Seedproperty is set, the values from the categories and products are used to populate the database.

If you attempt to update the seed data by modifying the above code after the database has been created, you won't see any updates when you run the Web application.

The reason is the above code uses an implementation of the DropCreateDatabaseIfModelChanges class to recognize if the model (schema) has changed before resetting the seed data.

If no changes are made to the Category and Product entity classes, the database will not be reinitialized with the seed data.

Create the Data Access Layer的更多相关文章

  1. Apache Cloudstack Development 101 -- Data Access Layer

    刚接触CloudStack,也是第一次翻译英文文档,限于水平有限,不当之处欢迎拍砖! 原文地址:https://cwiki.apache.org/confluence/display/CloudSta ...

  2. csharp: Procedure with DAO(Data Access Object) and DAL(Data Access Layer)

    sql script code: CREATE TABLE DuCardType ( CardTypeId INT IDENTITY(1,1) PRIMARY KEY, CardTypeName NV ...

  3. Generic Data Access Layer泛型的数据访问层

    http://www.codeproject.com/Articles/630277/Generic-Data-Access-Layer-GDA-Part-I http://www.codeproje ...

  4. Plugin with data access

    In this tutorial I'll be using the nopCommerce plugin architecture to implement a product view track ...

  5. Spring.NET的中间数据层(Middle Tier Data Access)——事务管理(Transaction management)

    简介 Spring.NET为事务管理提供了一个持久化抽象(consistent abstraction ),其优点如下: 为不同事务API,例如ADO.NET,Enterprise Services, ...

  6. EnterpriseLibrary 6.0(微软企业库6.0学习笔记) 之Data Access Block 配置和获取链接字符串

    EnterpriseLibrary 的特点是快速开发,融合了微软工程师多年的经验,现在在微软内部有专门的一个小组在完善EnterpriseLibray,最近的更新时间是April 2013. 相关链接 ...

  7. Data access between different DBMS and other txt/csv data source by DB Query Analyzer

        1 About DB Query Analyzer DB Query Analyzer is presented by Master Genfeng,Ma from Chinese Mainl ...

  8. FunDA(0)- Functional Data Access accessible to all

    大数据.多核CPU驱动了函数式编程模式的兴起.因为函数式编程更适合多线程.复杂.安全的大型软件编程.但是,对许多有应用软件开发经验的编程者来说,函数式编程模式是一种全新的.甚至抽象的概念,可能需要很长 ...

  9. Enterprise Library - Data Access Application Block 6.0.1304

    Enterprise Library - Data Access Application Block 6.0.1304 企业库,数据访问应用程序块 6.0.1304 企业库的数据访问应用程序块的任务简 ...

随机推荐

  1. (2016北京集训十二)【xsy1542】疯狂求导

    题解: 这题看起来很难...但是实际上并没有想象中的那么难 第一眼看上去不会求导公式怎么办?不要紧,题目背景非常良心的给出了题目中的导数计算公式 求完导合并同类项很恶心怎么办?不要紧,样例解释说明了不 ...

  2. 2013-11-02 【webrebuild广州站】分享会纪要

    为了不让自己沉浸个人的技术研究当中,也为了多去接触业界新技术新思想,今天去参加了webrebuild广州站的一个分享交流会,效果不错,有一些获益.听了四个主题,依据个人获取信息的情况来做个纪要(比较粗 ...

  3. tinymce原装插件源码分析(六)-preview

    priview 此插件文件结构比较简单,按钮注册.editor.windowManager.open.窗口出现之前的渲染数据的准备.页面代码的准备. 注意: 1.preview的默认宽高设置: 2.c ...

  4. 洛谷 P1541 乌龟棋 (四维费用背包)

    一开始直接用01背包 后来发现这个物品和位置有关. 也就是价值不是固定的 后来看了题解 看了卡片最多就4 所以这是一个四维费用的背包, 每一维是卡片的数量 价值就是当前的位置的价值. 但是与常规的背包 ...

  5. python list set dict的简单应用示例

    list.count(x):返回指定元素x在列表中出现的次数 set(list):将list类型变量转换为set类型,去除重复值 dick:保存键值对 x=[1,2,2,3,3] s1=set(x) ...

  6. [React] Optimistic UI update in React using setState()

    In this lesson we will refactor an existing UI update from a typical loading approach to an optimist ...

  7. [Javascript] Simplify Creating Immutable Data Trees With Immer

    Immer is a tiny library that makes it possible to work with immutable data in JavaScript in a much m ...

  8. 改动Android设备信息,如改动手机型号为iPhone7黄金土豪版!

    首先你的手机必需要有ROOT权限,误操作有风险需慎重 请先开启手机的USB调试,防止手机改动后无法启动时导致的无法修复 1.假设你是在手机上改动,直接使用RE文件管理器,编辑/system/build ...

  9. SVN版本号管理工具使用中常见的代码提交冲突问题的解决方法

    相信刚開始学习使用SVN的小伙伴在项目合作开发的过程中一定常常遇到一些影响到自己编写的代码的苦恼.我这里列举了几种常见的问题以及问题的解决方法: 1.误删除和误操作的问题 问题1:有A和B两个人一块合 ...

  10. bzoj3931: [CQOI2015]网络吞吐量(spfa+网络流)

    3931: [CQOI2015]网络吞吐量 题目:传送门 题解: 现在有点难受....跳了一个多钟...菜啊... 题意都把做法一起给了....最短路+网路流啊. 不想说话...记得开long lon ...