EntityFramework数据持久化复习资料1、委托

简介: EntityFramework数据持久化复习资料1、委托

EntityFramework数据持久化复习资料1、委托


前言

微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。开发人员使用Linq语言,对数据库操作如同操作Object对象

一样省事。EF有三种使用场景,1. 从数据库生成Class,2.由实体类生成数据库表结构,3.通过数据库可视化设计器设计数据库,同时生成实体类。

ORM (对象关系型映射)是将数据存储从域对象自动映射到关系型数据库的工具。ORM主要包括3个部分:域对象、关系数据库对象、映射关系。ORM使类提供自动化CRUD,使

开发人员从数据库API和SQL中解放出来。以前是使用ADO.NET来进行对数据库中得数据表进行操作,现在,使用ORM直接对对象进行操作,操作对象就等于操作数据库表,

那怎么让对象和数据库表一一对应起来?这个过程就是通过ORM框架来完成的,操作对象就是操作数据库也是通过ORM来完成的。ORM框架就是做对象和数据库的映射的。

那么EntityFramework的作用是什么?

我的理解就是大大简化数据库操作的,举个例子:在没有使用EF前,我们要编写复杂的SQL语句,而使用了EF之后,将会减少编写复杂的SQL语句过程。

开发环境

系统环境:win7及以上,本示例环境win11

开发工具:Visual Studio 2017及以上

创建项目:控制台应用(.NET Framework)

数据库:SQLServer数据库2012及以上版本


委托的概述与声明

概述

委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。

可以通过委托实例调用方法。也可以使用委托将方法作为参数传递给其他方法。

委托的使用将大大提高程序的可扩展性。

声明方法

委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同签名的方法:

public delegate <return type> <delegate-name> <parameter list>

其中:

<return type>为返回类型

<delegate-name>委托名

<parameter list>参数列表

一般委托示例

public delegate string TranslationDelegate (string s);

委托实例化

TranslationDelegate transform=new TranslationDelegate(TestFun);

实现委托函数

/// <summary>
/// 实例化参数
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string TestFun(string name) {
    return name + ":早上好!";
}

使用委托

//委托实例化
TranslationDelegate transform = new TranslationDelegate(TestFun);
//使用委托
string msg = transform.Invoke("王语嫣");
Console.WriteLine(msg);
string msg1 = transform.Invoke("龙姑娘");
Console.WriteLine(msg1);

输出效果:

 

多播委托示例

       委托对象有一个好用的属性,可以通过使用“+”运算符将多个对象分配到一个委托实例上,形成多播委托。多播委托包含已分配的委托列表,因此多播委托被调用时会依次调用列表中的委托。但是多播委托仅可合并类型相同的委托。使用“-”运算符可以从多播委托中删除组件委托。

例如:我们赵灵儿变身后陪着逍遥哥哥打怪兽。

声明多播委托

/// <summary>
/// 声明多播委托
/// </summary>
/// <param name="name"></param>
delegate void Operation(string name);

多播委托实例化

//多播委托实例化
Operation operation = new Operation(Change);

实现多播委托函数

public static void Change(string name)
{
    Console.WriteLine(name + ":在变身!");
}
public static void Fight(string name)
{
    Console.WriteLine(name + ":正在配逍遥哥哥打怪兽!");
}

多播委托的使用

//多播委托实例化
Operation operation = new Operation(Change);
//累加使用
operation += new Operation(Fight);
//参数传递
operation.Invoke("赵灵儿");

执行效果

总结

委托的使用将大大提高程序的可扩展性,让我们使用的时候可以更加的灵活。

相关文章
|
7月前
|
SQL 开发框架 .NET
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
58 0
|
7月前
|
SQL 开发框架 .NET
EntityFramework数据持久化复习资料5、LINQ概述与应用(超终点)
EntityFramework数据持久化复习资料5、LINQ概述与应用(超终点)
67 0
|
7月前
|
SQL 存储 开发框架
EntityFramework数据持久化复习资料4、Lambda表达式的使用(重点内容)
EntityFramework数据持久化复习资料4、Lambda表达式的使用(重点内容)
56 0
|
4月前
|
设计模式
学会了这个设计模式,再也不是只会写if/else了
本文详细介绍了责任链设计模式(Chain of Responsibility Pattern),这是一种行为型设计模式,用于创建一个接收者对象的链,通过解耦请求的发送者和接收者,允许沿着链传递请求,直到某个接收者能够处理它。
学会了这个设计模式,再也不是只会写if/else了
|
4月前
|
Java 数据库连接 数据库
从零到精通:揭秘 Hibernate 构建持久层服务的全过程,你离数据持久化大师还有多远?
【8月更文挑战第31天】本文详细介绍了如何从零开始使用 Hibernate 构建一个持久层服务。首先,通过在 Maven 项目中添加必要的依赖,确保项目具备使用 Hibernate 的条件。接着,配置 `hibernate.cfg.xml` 文件以连接 MySQL 数据库,并设置了基本属性。然后定义了一个简单的 `User` 实体类及其映射关系。此外,还创建了一个 `HibernateUtil` 工具类来管理 `SessionFactory`。
47 0
|
4月前
|
开发者 Java Spring
【绝技揭秘】掌握Vaadin数据绑定:一键同步Java对象,告别手动数据烦恼,轻松玩转Web应用开发!
【8月更文挑战第31天】Vaadin不仅是一个功能丰富的Java Web应用框架,还提供了强大的数据绑定机制,使开发者能轻松连接UI组件与后端Java对象,简化Web应用开发流程。本文通过创建一个简单的用户信息表单示例,详细介绍了如何使用Vaadin的`Binder`类实现数据绑定,包括字段与模型属性的双向绑定及数据验证。通过这个示例,开发者可以更专注于业务逻辑而非繁琐的数据同步工作,提高开发效率和应用可维护性。
98 0
|
6月前
|
SQL 存储 Oracle
老程序员分享:petshop详解之二:PetShop数据访问层之数据库访问设计
老程序员分享:petshop详解之二:PetShop数据访问层之数据库访问设计
|
7月前
|
SQL 存储 开发框架
EntityFramework数据持久化复习资料6、EntityFramework引入
EntityFramework数据持久化复习资料6、EntityFramework引入
55 0
|
Java Spring 容器
Spring源码:Bean生命周期(终章)
本系列前面讲解了Spring的bean定义、bean实例化、bean初始化等生命周期阶段。这些步骤使我们能够了解bean从创建到准备好使用所经历的过程。但是,除了这些步骤,bean的销毁也是非常重要的一步。在本系列的最后,我们将深入探讨bean的销毁过程,包括在什么情况下会发生销毁、销毁的顺序以及如何在bean销毁之前执行一些清理任务等。通过学习bean的销毁过程,我们将更全面地了解Spring的bean生命周期。在Spring中,有多种方式可以销毁bean。其中一种方式是在应用程序关闭时显式地调用`applicationContext.close()`方法来关闭容器。这个方法将会销毁所有还没
|
设计模式 安全 Java
Activiti工作流学习笔记(四)——工作流引擎中责任链模式的建立与应用原理
过滤器链就像一条铁链,中间的每个过滤器都包含对另一个过滤器的引用,从而把相关的过滤器链接起来,就像一条链的样子。这时请求线程如蚂蚁一样,会沿着这条链一直爬过去-----即,通过各过滤器调用另一个过滤器引用方法chain.doFilter(request, response),实现一层嵌套一层地将请求传递下去,当该请求传递到能被处理的过滤器时,就会被处理,处理完成后转发返回。通过过滤器链,可实现在不同的过滤器当中对请求request做拦截增加,且过滤器之间彼此互不干扰。
87 0