最近在看MVC方面的资料,看了几个教程都在使用Entity Framework做数据持久化。之前也听说过这个东西,在微软的网站上看过一个演示视频,但都没怎么去仔细研究。MVC的东西太庞大了,先慢慢熟悉着。但可以从其中的一个部分入手,先学习Entity FrameWork。当作笔记,哪天翻出来温故。

简单说,EF是一个ORM解决方案,是微软出的东西。这里,主要记录如何使用,至于它的来龙去脉,可以网上搜搜。现在就开始用VS2010创建Console项目,并且使用EF作为和数据库打交道的工具。VS2010中要使用EF框架的话,得先安装插件:NuGet,点击下面连接https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c,下载后安装即可。

新建Console项目,命名EFConsoleDemo。右键项目,此时看到菜单上有“管理NuGet程序包”项,点击后在弹出的窗体上搜索Entity Famework,点后面的安装。中间会弹出是否同意安装,点“我同意”完成即可。

右键项目,点击管理“NuGet程序包”

搜索到Entity Framework后,点后面安装(如未安装,绿色打勾的地方会有安装按钮)

此时我们看到项目中会多出一个pakages.config文件,展开引用,会发现多出几个EntityFramework相关的引用。这里记录的是EF的Code First模式的使用方。接下来配置数据库连接字符串,在App.config文件中添加如下配置:

<connectionStrings>
<add name="UserDal" providerName="System.Data.SqlClient" connectionString="Data Source = localhost; Initial Catalog = TestDb; Integrated Security = true"/>
</connectionStrings>

  这里需要注意连接字符串的name属性,后面创建类的时候需要和这里的名字保持一致。接下来创建类,这里以一个简单的用户管理为例。假设用户表需要ID,UserName,UserPwd,Email,Tel字段,则需要创建一个User类,直接贴代码。ID上的[Key]属性表示该属性在数据库表中映射的字段是主键。

   public class Users
{
[Key]
public int UserId { get; set; } public string UserName { get; set; } public string UserPwd { get; set; } public string Email { get; set; } public string Tel { get; set; }
}

接下来是重点,创建和数据库打交道的代码了。注意这里的类名UserDal,需要和App.config中连接字符串的name属性一致才可以。重写OnModelCreating方法,将上面的User类映射到数据库中的T_Users表中。

    public class UserDal : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Users>().ToTable("T_Users");
base.OnModelCreating(modelBuilder);
} public DbSet<Users> users { get; set; }
}

回到项目中的Program.cs文件中,为User类创建实例,并将实例值插入数据库。

  class Program
{
static void Main(string[] args)
{
OperationClass operation = new OperationClass();
Users user = operation.InitUser();
operation.SaveUser(user);
operation.DisplayUsers();
Console.ReadKey();
}
} public class OperationClass
{
public Users InitUser()
{
string userName = string.Empty;
string userPwd = string.Empty;
string Email = string.Empty;
string Tel = string.Empty;
Users user = new Users();
Console.WriteLine("Input UserName:");
userName = Console.ReadLine();
Console.WriteLine("Input UserPwd");
userPwd = Console.ReadLine();
Console.WriteLine("Input UserEmail");
Email = Console.ReadLine();
Console.WriteLine("Input UserTel");
Tel = Console.ReadLine(); user.UserName = userName;
user.UserPwd = userPwd;
user.Email = Email;
user.Tel = Tel;
return user;
} public void SaveUser(Users user)
{
UserDal userDal = new UserDal();
userDal.users.Add(user);
userDal.SaveChanges();
} public void DisplayUsers()
{
Console.WriteLine("Display All Users In The System:");
Console.WriteLine("***************************************************");
UserDal userDal = new UserDal();
List<Users> users = userDal.users.ToList();
foreach (Users item in users)
{
Console.WriteLine("UserName: {0}", item.UserName);
Console.WriteLine("UserPwd: {0}", item.UserPwd);
Console.WriteLine("UserEmail: {0}", item.Email);
Console.WriteLine("UserTel: {0}", item.Tel);
Console.WriteLine("*****------**********---------********");
}
Console.WriteLine("All Users Displayed.");
}
}

运行项目。初次运行时,输入数据后,EF会自动在TestDb中创建T_Users表,并将输入的数据插入数据库中。Display方法中,调用了UserDal中users属性的ToList方法,获取数据表中的全部数据。因此,第二次输入数据时,会将第二条数据插入表中,并输出两条数据来。至此,在VS 2010中使用EF已经成功。为我们带来了些什么方便?首先,不用在数据库中创建表(或写sql脚本生成);不需要写插入语句和查询语句了。框架为我们完成了对象和数据的关系映射。但是,问题来了,我们在项目中,不可能只用到插入和查询所有数据这两种简单的操作。我们还需要删除,修改,按条件查询等等复杂的数据库操作呢。

待续.....

Entity Framework笔记(一)的更多相关文章

  1. Entity Framework 笔记(一)

    Entity Framework概述 EF是一个对象关系映射(ORM)框架,允许开发人员使用特定于域的对象关系型数据,开发人员通常不需要编写大量的数据访问代码.使用EF,开发者可以利用LINQ进行查询 ...

  2. Entity Framework笔记(二)

    前几日学习了在VS2010Console项目中使用Entity Framework,并且使用Code First模式.通过编写Model类,来生成数据库对应的表.并且,往表中写入数据以及获取表中的所有 ...

  3. .NET:Entity Framework 笔记

    有二年没关注EF,今天无意试了下发现跟主流的Hibernate等ORM框架越来越接近了,先看下Entity类的定义: using System; using System.Collections.Ge ...

  4. Entity Framework 学习笔记(2)

    上期回顾:Entity Framework 学习笔记(1) Entity Framework最主要的东西,就是自己创建的.继承于DbContext的类: /// <summary> /// ...

  5. Entity Framework学习笔记

    原文地址:http://www.cnblogs.com/frankofgdc/p/3600090.html Entity Framework学习笔记——错误汇总   之前的小项目做完了,到了总结经验和 ...

  6. Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例

    前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也 ...

  7. ADO.NET Entity Framework学习笔记(3)ObjectContext

    ADO.NET Entity Framework学习笔记(3)ObjectContext对象[转]   说明 ObjectContext提供了管理数据的功能 Context操作数据 AddObject ...

  8. .NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

    上一篇我们梳理了CodeFist的一般流程,本篇我们讨论如何在一套代码中,支持SQL Server和SQLite的切换.同时从本篇开始,我们从.NET Core 3.1 迁移到.NET 5.相信.NE ...

  9. MVC中使用Entity Framework 基于方法的查询学习笔记 (一)

    EF中基于方法的查询方式不同于LINQ和以往的ADO.NET,正因为如此,有必要深入学习一下啦.闲话不多说,现在开始一个MVC项目,在项目中临床学习. 创建MVC项目 1.“文件”--“新建项目”-- ...

随机推荐

  1. windows phone 了解LinearGradientBrush类和RadialGradienBrush类(11)

    原文:windows phone 了解LinearGradientBrush类和RadialGradienBrush类(11) 我们了解到在能在xaml中完成的设计,一般在隐藏文件中也可通过代码完成: ...

  2. C# 32位程序访问64位系统注册表

    原文:C# 32位程序访问64位系统注册表 我的上一篇文章已经阐述了“32位程序和64位程序在64位平台上读\写注册表的区别”,那么接下来将要回答上篇所留下来的一个问题:32位程序如何访问64位系统注 ...

  3. 观察者模式(Observer Patterns)

    今天学习了观察者模式,做个总结,方便以后回想. 首先是定义:观察者模式就是定义对象之间一对多的依赖关系,当一个对象状态发生改变时,全部依赖他的对象都收到推送消息并自己主动更新做出改变. 我的理解:生活 ...

  4. 工作经常使用的SQL整理,实战篇(三)

    原文:工作经常使用的SQL整理,实战篇(三) 工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实 ...

  5. 自己写shell命令pwd

    思维:(1)得到"."的i节点号,叫n(使用stat) (2)chdir ..(使用chdir) (3)找到inode号为n的节点,得到其文件名称. 反复上述操作直到当前文件夹&q ...

  6. LVM逻辑卷管理@设备、格式、摩、引导自己主动安装一个完整的章节

    离http://www.it165.net/admin/html/201307/1553.html LVM的重要性,在这里我也就不多说了,今天和大家分享一下.LVM设备,而且安装方式. 首先呢,先让我 ...

  7. 重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState, VisualStateManager

    原文:重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState ...

  8. UVA 11248 - Frequency Hopping(网络流量)

    UVA 11248 - Frequency Hopping 题目链接 题意:给定一个网络,如今须要从1到N运输流量C,问是否可能,假设可能输出可能,假设不可能,再问能否通过扩大一条边的容量使得可能,假 ...

  9. 开源 自由 java CMS - FreeCMS1.9 分纪录

    项目地址:http://www.freeteam.cn/ 2.4.1 积分记录 查看系统全部会员积分记录. 从左側管理菜单点击积分记录进入. 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  10. asp.net访问网络路径方法(模拟用户登录)

    public class IdentityScope : IDisposable { // obtains user token [DllImport("advapi32.dll" ...