最近在看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. [转]C#自定义开关按钮控件--附带第一个私活项目截图

    原文地址:http://www.cnblogs.com/feiyangqingyun/archive/2013/06/15/3137597.html 进入智能手机时代以来,各种各样的APP大行其道,手 ...

  2. SSO(Single Sign On)系列(一)--SSO简单介绍

    任何类型的站点,到达一定规模之后一定会存在这种问题:比方我们有N个系统.传统方式下我们就须要有N对不同的username和password,本来这些系统的开发都能为我们带来良好的效益,用户在用的时候并 ...

  3. 基于 Android 的 3D 视频示例代码

    笔者:Mark Liu 下载样本代码 简单介绍 在Android 中,创建一个可以播放视频剪辑的应用很easy:创建一个採用 3D 图形平面的游戏应用也很easy.可是,创建一个可以在 3D 图形对象 ...

  4. 关与 Visual.Assist.X.V10.7.1912的Crack破解补丁(vs 番茄插件的key破解方法)

    在win7系统下, 我用的是vs2012版本号. Visual Assist沿用了快10年的界面,最终有了更新,变得更加适合Win8 以及 VS2012的主题风格了 ,这也是以后软件的发展趋势,仅仅是 ...

  5. C# 几种方法来复制的阵列

    突然接触到,所以就写一下共享. 首先说明一下,数组是引用类型的,所以注意不要在复制时复制了地址而没有复制数值! 事实上在复制数组的时候.一定要用new在堆中开辟一块新的空间专门用于存放数组.这样才是有 ...

  6. 代码的未来读书笔记&lt;二&gt;

    代码的未来读书笔记<二> 3.1语言的设计 对Ruby JavaScript Java Go 从服务端client以及静态动态这2个角度进行了对照. 这四种语言因为不同的设计方针,产生了不 ...

  7. 【Linux探索之旅】第一部分第四课:磁盘分区,并完成Ubuntu安装

    内容简介 1.第一部分第四课:磁盘分区,并完成Ubuntu安装 2.第一部分第五课预告:Unity桌面,人生若只如初见 磁盘分区 上一课我们正式开始安装Ubuntu了,但是到了分区的那一步,小编却戛然 ...

  8. hdu4190 简单的二分法

    题意是 有n个城市,m个投票箱.接下来n个城市人口数,每一个投票箱都不能为空.计算最后投票箱的容量必须达到多少,才干满足须要. 每一个城市的人必须仅仅能将票投到自己城市分得得投票箱中.要是容量最小箱子 ...

  9. React-Native入门

    React-Native入门指导之iOS篇 React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JS ...

  10. MonkeyRunner源代码分析Android通信设备

    正如前面<谁动了我的截图?--Monkeyrunner takeSnapshot方法源代码跟踪分析>所述,本文主要会尝试描写叙述android的自己主动化測试框架MonkeyRunner到 ...