EntityFramework数据持久化复习资料2、隐式与匿名类型同匿名函数的使用

简介: EntityFramework数据持久化复习资料2、隐式与匿名类型同匿名函数的使用

EntityFramework数据持久化复习资料2、隐式与匿名类型同匿名函数的使用


前言

微软官方提供的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)】

       Web请创建【ASP.NET Web应用程序(.NET Framework)】

数据库:SQLServer数据库2012及以上版本·如果下载最新版本,使用免费版本即可。

       本地数据库链接:【.】或【127.0.0.1】

       登陆方式1:【本地登陆】

       登陆方式2:账号【sa】 pwd【admin】

       测试数据库名称:【mytest】

       排序规则:【Chinese_PRC_CI_AS】


隐式类型

隐式类型是必须要给予默认的【初始值】,否则无法判断其类型。

var 变量 = 初始值;

显示与隐式对比

使用显式类型:int num = 1;

使用隐式类型:var num_var = 1;

类型测试

这里我们先定义了一个int类型,当输出其变量类型的时候能直接看到输出的是int类型,因为我们声明了int类型,var类型当赋值的时候就会根据给予的数据对应的类型进行赋值变化。所以输出的时候依然是int类型,不过不能再次赋值其它类型。

int num = 1;
Console.WriteLine(num.GetType());
var num_var = 1;
Console.WriteLine(num_var.GetType());

输出效果:

其它类型赋值测试:

这个异常提示就很直接的表述了其隐式转换的问题。

匿名类型

我们可以直接来声明一个匿名类型,但是一定需要在堆中new一个空间出来,不能直接类似于json一样写。

var girl = new
{
    ID = 1,
    Name = "王语嫣",
    Age = 16
};
Console.WriteLine(girl.GetType());
Console.WriteLine(girl);

输出效果:

匿名函数

匿名函数需要使用delegate委托来创建,使用的时候直接根据变量名称使用即可。

/// <summary>
/// 声明委托
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
delegate int otherdel(int a, int b);
public static void Main()
{
    //创建匿名函数
    otherdel add = delegate (int x, int y)
    {
        return x + y;
    };
    //使用匿名函数
    Console.WriteLine(add(111, 555));
}

输出效果:

显示匿名数据

这里需要创建:【ASP.NET Web应用程序(.NET Framework)】项目

创建一个Index的测试窗体

创建一个用作测试的asp:GridView:

<asp:GridView runat="server" ID="showList"></asp:GridView>

在Index.aspx中找到后台的类【Index.aspx.cs】进行匿名数据绑定,绑定完毕后即可点击运行,看看具体效果:

var list = new List<string>{
    "王语嫣","小龙女","赵灵儿"
};
this.showList.DataSource = list;
this.showList.DataBind();

遍历效果:

遍历匿名对象数据

这里的匿名对象格式需要使用List<object>来接收。

后台更换代码:

var a = new {
    id = 1,
    name = "王语嫣",
    age = 16
};
var b = new {
    id = 2,
    name = "小龙女",
    age = 17
};
var list = new List<object>{
    a,b
};
this.showList.DataSource = list;
this.showList.DataBind();

运行效果:

这个数据类型属于匿名对象的列表,我们遍历的时候直接能遍历出对应的内容。后面我们通过EF查询出来的数据基本都数据这类数据类型,这个示例是为后面的技术讲解做铺垫。

相关文章
|
1月前
|
SQL 开发框架 .NET
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
31 0
|
1月前
|
存储 安全 编译器
【C++ 多态原理】深入探讨C++的运行时类型信息(RTTI)和元数据
【C++ 多态原理】深入探讨C++的运行时类型信息(RTTI)和元数据
100 1
|
11月前
|
编译器 C语言 C++
【C++学习】C++入门 | 引用 | 引用的底层原理 | auto关键字 | 范围for(语法糖)
【C++学习】C++入门 | 引用 | 引用的底层原理 | auto关键字 | 范围for(语法糖)
102 0
|
7月前
|
测试技术
面向对象的 ABAP 里,全局类和局部类有什么区别,以及各自的使用场合试读版
面向对象的 ABAP 里,全局类和局部类有什么区别,以及各自的使用场合试读版
36 1
|
8月前
|
JavaScript 前端开发
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(1)
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(1)
|
8月前
|
JavaScript API
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(2)
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(2)
|
Java
Java面向对象(12)--对象类型转换 (Casting )
Java面向对象(12)--对象类型转换 (Casting )
108 0
Java面向对象(12)--对象类型转换 (Casting )
|
JavaScript 测试技术
干货 | Web自动化测试中显式等待与隐式等待该怎么用?
在实际工作中等待机制可以保证代码的稳定性,保证代码不会受网速、电脑性能等条件的约束。 等待就是当运行代码时,如果页面的渲染速度跟不上代码的运行速度,就需要人为的去限制代码执行的速度。 在做 Web 自动化时,一般要等待页面元素加载完成后,才能执行操作,否则会报找不到元素等各种错误,这样就要求在有些场景下加上等待。 最常见的有三种等待方式: - 隐式等待 - 显式等待 - 强制等待 后面会一一介
|
存储 编译器 Swift
Swift - 闭包捕获值原理分析
先说原理本质: 编译器在堆上开辟空间,存放了捕获的值
Swift - 闭包捕获值原理分析
|
自然语言处理 JavaScript 前端开发
「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包
「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包
100 0
「注解」《你不知道的JavaScript(上卷)》第五章:作用域闭包

热门文章

最新文章