【Visual Studio】 使用EF、 Linq2Sql快速创建数据交互层(一)

项目伊始,创建数据库交互层代码是底层框架的首要任务。常用的做法包括手动编码、Hibernate或者动软之类的代码生成器,而多数人忽略了.Net环境下VS提供的两套非常好用的数据层工具。

EF和Linq2Sql两套框架。 实际上他们相比其他方式绝对是最快,最方便的。 对使用者而言,无论EF还是Linq2Sql,他们都默认将项目配置了正确的数据库连接,大幅减少在代码中的工作量。

EF是Entity Framework 的缩写,目前应该是到了第7个版本(貌似在Beta版本)。

Microsoft has given the following definition of Entity Framework:

The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM) framework that enables developers to work with relational data as domain-specific objects, eliminating the need for most of the data access plumbing code that developers usually need to write.

实际上,按照微软给出的定义,EF的目的在于简化开发人员工作量,推出了这套框架。下图是EF的工作流程示例。

实际上,EF支持从数据表建立实体类,从实体类生成数据表以及从数据库设计(DB Model)自动创建实体类和数据表。

如此可以直接大幅降低花费在数据库设计、建表和写实体类的工作。毕竟那是码农们干的事情,程序员怎么可以这么浪费时间呢。

目前为止,EF6应该是最新的。接下来从 table -> Domain Class的模式出发,简单介绍EF的使用。

VS里自己集成了EF,创建EF的数据层的步骤是:为解决方案添加数据库连接,之后在解决方案下新建项目作为数据交互层,再在该项目下新建EF。

1. 建立数据库连接。

2. 创建ADO.Net 数据库实体

3. 选择Code First, 这里我是已经存在数据库了。

4. 可以看到结果已经创建好所有被选中的数据表实体模型了。

接下来我们写一段代码进行数据访问。在我的示例里,我们计划查询的一张表目前的数据量是在100万条记录以上。我们进行简单的select查询。

public void Test1_Select()
{
    Model1 modelContext = new Model1();
   //select from rt_LeakProbe
  var temp = modelContext.rt_LeakProbe.toList();
   long count = temp.Count();  DateTime lastDate = temp.GroupBy(x => x.UploadTime).Max(x => x.Key);
  Console.WriteLine("count is: {0}; last Data Time is :{1};", count, lastDate.ToString("yyyy-MM-dd HH:mm:ss:ffff"));
}

在我们使用 db First创建了数据表的实体同时,得到了一个默认命名为 Model1的类。这个类实际上是我们操作所有数据表的核心。在前一张截图中可以看到,Model1 是继承了DbContext类。

关于DbContext类,可以理解成一个具备访问配置项目的基类,在这里,我们要访问的项目就是在这个项目的App.Config中能够找到的配置项。(你也可以认为就是数据库连接)

以上代码使用MS Test框架创建单元测试形式来测试。

需要注意的是,MS Test同样需要使用NuGet进行EF的安装以便正常读取到数据库连接配置。

查询结果, 数据量 1067189, 最新纪录上传时间是11:54:25.777。

相信EF的优势已经有所体现。当然个人暂时认为是存在一定不足的,比如说业务表设计中是可以使用继承方式简化一部分操作,而无论EF、Hibernate还是 Linq2Sql都提供直接的Mapping功能,这样再去做继承很麻烦。

但是实际上直接的Mapping在数据库设计非常合理的前提下,是最简单可靠的做法。

总而言之,EF这类工具非常高效,大幅简化开发人员花在搭建数据层所需要的时间。个人也认为,使用EF的效率是高于Hibernate和动软之类工具的。

时间: 2024-11-19 13:06:39

【Visual Studio】 使用EF、 Linq2Sql快速创建数据交互层(一)的相关文章

Unity中启动VS时出现"Visual Studio 2010 Shell 无效的许可证数据"的解决办法

(感觉还是cnblog好一点,刚注册成功赶紧把baidu hi的一篇文章搬过来试试) 一直用着Visual Studio 2013给Unity写代码,安装了SQL Server 2014后,在Unity启动VS的时候,会出现"Visual Studio 2010 Shell 无效的许可证数据"的提示,然后就变启动MonoDevelop了.如图. 解决办法: 修改注册表 HKEY_CLASSES_ROOT下找到"VisualStudio.DTE.10.0"项 把它改成

快速创建数据大绝招

作为程序员,创建数据库,输入数据的时候,都会有个量的问题,少了好说,多了呢,上千上万条怎么办?一个个输入的话那不是要死人? 还好,咱有妙招,不多说了,直接进入正题:如何把word文件数据快速生成数据! 准备条件:word.Excel (我用的是wps,Excel使用上有点区别,一会介绍): 还有 EditPlus 说白了也就是EditPlus绝妙用法: 先看原来word文件数据是这样的 选中,复制出来=> 粘贴到EditPlus中,先预备好创建代码=> 同样的代码快速复制,请狠狠的按Ctrl+

如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?

对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可.当.NET Core跨出了Windows的围栏,正式拥抱其他平台,意味着VS已经不再是唯一的IDE.于此同时,.NET Core充分借鉴了目前非常流行的基于“脚手架(Scaffolding)”的源文件生成方式,在它的核心命令行“dotnet”也添加了脚手架的命令行开关.除此之外,.NET Core真正对社区敞开胸怀,我们可以直接利用现有的脚手架工具Yeoman来

Visual Studio 2017 安装后无法创建c++或MFC项目

话话不多说,直接上图

快速创建数据举例

从iOS6以后,引入了一些非常简洁的语法,例如 (1)@[objects, ...]         //@[] 初始化不可变数组 (2)@{key:object, ...}      //@{}初始化不可变字典 (3)@(object)            //@()初始化不可变对象

Visual Studio Code python 代码快速自动提示

1.file --> setting->设置 搜索 python 或者auto_complete setting.json { "explorer.confirmDelete": false, // "python.linting.pylintArgs": [ // "--generate-members" // ], "editor.suggestSelection": "first", &q

使用 Cordova+Visual Studio 创建跨平台移动应用(2)

目前开发移动应用有三种模式:Native.Hybird.Web,若要开发跨平台的移动应用,又希望与本地API交互,那么Hybird是一个非常好的选择.       作为一个.Net程序员,可以使用熟悉的IDE,Visual Studio来进行开发移动应用,目前已经有基于Visual Studio的扩展来帮助我们快速开发: Cordova(HTML/Javacript) Xamarin(.Net Framework)       请参考以下文章: 为Windows, Android, 和 iOS 

Visual Studio创建跨平台移动应用_01.Cordova&Xamarin

      目前开发移动应用有三种模式:Native.Hybird.Web,若要开发跨平台的移动应用,又希望与本地API交互,那么Hybird是一个非常好的选择.       作为一个.Net程序员,可以使用熟悉的IDE,Visual Studio来进行开发移动应用,目前已经有基于Visual Studio的扩展来帮助我们快速开发: Cordova(HTML/Javacript) Xamarin(.Net Framework)       请参考以下文章: 为Windows, Android,

使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍

使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍 Windows MobileMobileWindowsMicrosoftWinForm 介绍 Microsoft Visual Studio 2008 专业版或者更高版本提供了一个Windows Mobile程序开发环境,允许你使用本地代码(C / C++)或托管代码(C# / Visual Basic.NET)为Windows Mobile设备创建程序. 这篇文章将带你正确的安装Visual Studi