Entity Framework笔记(一)
最近在看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笔记(一)的更多相关文章
- Entity Framework 笔记(一)
Entity Framework概述 EF是一个对象关系映射(ORM)框架,允许开发人员使用特定于域的对象关系型数据,开发人员通常不需要编写大量的数据访问代码.使用EF,开发者可以利用LINQ进行查询 ...
- Entity Framework笔记(二)
前几日学习了在VS2010Console项目中使用Entity Framework,并且使用Code First模式.通过编写Model类,来生成数据库对应的表.并且,往表中写入数据以及获取表中的所有 ...
- .NET:Entity Framework 笔记
有二年没关注EF,今天无意试了下发现跟主流的Hibernate等ORM框架越来越接近了,先看下Entity类的定义: using System; using System.Collections.Ge ...
- Entity Framework 学习笔记(2)
上期回顾:Entity Framework 学习笔记(1) Entity Framework最主要的东西,就是自己创建的.继承于DbContext的类: /// <summary> /// ...
- Entity Framework学习笔记
原文地址:http://www.cnblogs.com/frankofgdc/p/3600090.html Entity Framework学习笔记——错误汇总 之前的小项目做完了,到了总结经验和 ...
- Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例
前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也 ...
- ADO.NET Entity Framework学习笔记(3)ObjectContext
ADO.NET Entity Framework学习笔记(3)ObjectContext对象[转] 说明 ObjectContext提供了管理数据的功能 Context操作数据 AddObject ...
- .NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite
上一篇我们梳理了CodeFist的一般流程,本篇我们讨论如何在一套代码中,支持SQL Server和SQLite的切换.同时从本篇开始,我们从.NET Core 3.1 迁移到.NET 5.相信.NE ...
- MVC中使用Entity Framework 基于方法的查询学习笔记 (一)
EF中基于方法的查询方式不同于LINQ和以往的ADO.NET,正因为如此,有必要深入学习一下啦.闲话不多说,现在开始一个MVC项目,在项目中临床学习. 创建MVC项目 1.“文件”--“新建项目”-- ...
随机推荐
- Android 权限添加
在AndroidMainFest.xml中加上以下代码就行了 添加WiFi以及访问网络的权限: <uses-permission android:name="android.permi ...
- oracle 11g impdp时 报ORA-12899(转)
源库ZHS16BGK,汉字在数据库存放的时候占用两个字节 目标库UTF8,汉字在数据库里存放的时候占用三个字节 由于字符集不同,导致现在数据库impdp的时候有些表的字段长度不够,出现ORA-1289 ...
- JDBC连接数据库经验技巧(转)
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成.JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序.然而各个开 ...
- oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)
一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类 ...
- 理解RESTful架构(转)
越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency).高 ...
- Hadoop学习笔记(两)设置单节点集群
本文描写叙述怎样设置一个单一节点的 Hadoop 安装.以便您能够高速运行简单的操作,使用 Hadoop MapReduce 和 Hadoop 分布式文件系统 (HDFS). 參考官方文档:Hadoo ...
- Codeforces Round #253 (Div. 1) B. Andrey and Problem
B. Andrey and Problem time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- 深度分析 Java 的 ClassLoader 机制(源码级别)(转)
写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoa ...
- c++宏源证券编程
1,定义宏功能,作,func(x) = x-1? 最简单的, 假设x = 2则 #define func(x) 1 特化出来x,令 #define func_helper_2 1 #defi ...
- C++ Primer 学习笔记_53_类和数据抽象 --友元、static员
分类 --友元.static成员 一.友元 友元机制同意一个类将对其.友元关系:一个样例 如果一个窗体管理类Window_Mgr可能须要訪问由其管理的Screen对象的内部数据.Screen应该同意其 ...