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.“文件”--“新建项目”-- ...
随机推荐
- Java对于私有变量“反思暴力”技术
(1)这两个类:(在相同的包装可以是) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5L2T/font ...
- eclipse 代码清理 代码格式化 代码凝视
Code Style包含两个方面:代码清理,代码规范化.代码清理能够參考: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-cle ...
- python基础课程_学习笔记15:标准库:有些收藏夹——fileinput
标准库:有些收藏夹 fileinput 重要功能 性能 叙述性说明 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 ...
- 【Android 应用开发】 FastJson 使用具体解释
博客地址 :http://blog.csdn.net/shulianghan/article/details/41011605 fastjson 源代码地址 : -- GitHub : https:/ ...
- nyoj 117 找到的倒数 【树阵】+【分离】
这个问题的解决方案是真的很不错!!! 思路:建立一个结构体包括val和id. val就是输入的数,id表示输入的顺序.然后依照val从小到大排序.假设val相等.那么就依照id排序. 假设没有逆序的话 ...
- 隐藏快捷方式扩展名(.lnk)
自从装了Windows 7操作系统以后,有一个问题一直困扰着我.当我去掉“目录选项中”的“隐藏已知文件类型的扩展名”选项的“√”之后,桌面上的快捷方式的扩展名也出来了,看上去非常不爽.记得在XP.Vi ...
- 切割图像(五)主动轮廓模型Snake简要模型
切割图像(五)主动轮廓模型Snake简要模型 zouxy09@qq.com http://blog.csdn.net/zouxy09 在"图像切割之(一)概述"中咱们简单了解了眼下 ...
- Java服务器下载速度的限制
没有取之不尽,用之不竭的资源.server有限的带宽.运营商可以限制一点点.近期使用云存储openstack swift待办事项文件存储下载.如果第一个限速code: private Long wri ...
- c#中的属性
在C#中我们可以很自由的访问共有字段,但有时我们可能需要某字段只能读或者写,或在改变字段值得时候做一些其他事情,显然这些仅仅依靠字段是无法实现的,于是便有了属性. 1.基本用法 c#中的属性由属性作用 ...
- Shuttle ESB 实践
http://blog.csdn.net/liu765023051/article/category/2482069