应用开发之Linq和EF

本文介绍了Linq和Entity Framework在.NET开发中的使用。首先,讲解了Linq的不同类别,如Linq to SQL和Linq to Entity,并通过实例展示了如何建立EF环境、创建数据库上下文和表类映射。接着,详细阐述了Linq to SQL和Linq to Entity的执行过程,强调了两者都需要数据源,通常由EF提供。最后,提到了Entity Framework的Code First模式及其数据迁移功能,并讨论了数据库操作和对象状态在EF中的处理方式。
摘要由CSDN通过智能技术生成
本章简言

上一章笔者对于WinForm开发过程用到的几个知识点做了讲解。笔者们可以以此为开端进行学习。而本章我们来讲一个跟ORM思想有关的知识点。在讲之前让我们想一下关于JAVA的hibernate知识点。hibernate也是ORM框架。记得hibernate里面有一个叫HQL。先不管HQL的好与坏。主要是明白HQL的目地是什么。ORM的思想就是为了让用户在操作数据的时候用上面向对象的思想来看,而不是二维数据了。所以HQL笔者认为就是一个面向对象思想的SQL语句。那么为什么笔者要讲到HQL呢?事实上笔者认为Linq有一点跟他类似。如果项目架构是三层的话,就是让业务层的开发人员不用在看二维数据了。就连SQL语句都是面向对象思想形式来操作了。而EF(Entity Framework)可以说就是hibernate。即是可以理解为Linq的数据源。但是HQL要在hibernate上面才能有效果。Linq却可以不用EF。

Linq语法

.NET对于Linq知识的分类让笔者有时候觉得很无力。为什么呢?最早的时候笔者认为Linq知识点分三大块。分别为Linq to SQL、Linq to Entity、Linq to Database。随着对Linq使用的增加却发现还有Linq to Xml 、Linq to Excel等。笔者想读者们是不是看出门道来了。可以说.NET在设计Linq的时候,应该是有充分的想过将来扩展的问题。当然这不是本章的目标。笔者在开发过程中最常用的就是Linq to SQL和 Linq to Entity。另外还有一个叫Linq to Object.对于Linq to Object笔者一直认为就是Linq to Entity。笔者的意思是指他们的知识该应放在一块。好了。先笔者讲一下关于Linq to SQL。

对于Linq to SQL来讲,只要学习SQL语法的人都不用担心很容易就上手。记得笔者学习的时候,一看我去不就HQL的另一种形态吗?当然 HQL可不是Linq还是要学习一下的。讲那么多没有用。用列子才是最好的。

一、建立EF环境。先建一个项目,然后通过NUGET来获得对应的EF的DLL。对于NUGET是什么。相信看过《Java进击C#——项目开发环境》的人应该可以了解到。选择“引用”右击》管理Nuget程序包。

相信看了上面的图片的时候,我们已经发现了EntityFramework了吧。点击“安装”就可以了。这个时候项目就会多出一个叫packages.config文件。这里面记录着当前安装的dll信息。同时物理目录里面会多出一个文件夹packages来存在这些dll。

我们看到引用里面多出了关于EF的引用dll。这个时候我们就可以做EF的事情了。

二、新建EF上下文。EF有一个很重要的类。可以说是学习EF的核心点。这个类就是DbContext。笔者新建一类叫AomiContext继承他。如下

public class AomiContext : DbContext
{

}

DbContext类有几个构造函数。笔者这里讲一个常用的吧。如下

 public DbContext(string nameOrConnectionString);

就是个构造函数意思就是传一个连接字符串或是配置文件的连接字符的配置名。记得上一节中讲的App.config了吧。没有错就是要用到他。看一下笔者写的内容吧。

复制代码
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="aomi" connectionString="Data Source=.;Initial Catalog=Ado;Persist Security Info=True;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>
复制代码

上面的connectionStrings部分是笔者自己写的。其他是自动生成的。.NET自己有一个配置连接字符串的节点。我们就是在这个节点上写入自己的连接就可以了。

<add name="aomi" connectionString
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值