使用EF 4.1的DbContext的方法大全
简述:EF4.1包括Code First和DbContext API。DbContext API为EF提供更多的工作方式:Code First,Database First和Model First。
使用DbContext构造函数
1. Code First约定连接
namespace Magic.Unicorn
{
public class UnicornsContext : DbContext
{
public UnicornsContext()
// C# will call base class parameterless constructor by default
{
}
}
}
用Magic.Unicorn.UnicornsContext作为数据库名,在本机上生成该数据库的连接字符串(SQL Express)。
2. Code First指定数据库名称的约定连接
public class UnicornsContext : DbContext
{
public UnicornsContext()
: base("UnicornsDatabase")
{
}
}
用UnicornsDatabase作为数据库名,在本机上生成该数据库的连接字符串(SQL Express)。
3. Code First用配置文件中的连接字符串
<connectionStrings>
<add name="UnicornsCEDatabase"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=Unicorns.sdf"/>
</connectionStrings>
public class UnicornsContext : DbContext
{
public UnicornsContext()
: base("name=UnicornsCEDatabase")
{
}
}
4. Database/Model First用配置文件中的连接字符
<add name="Northwind_Entities"
connectionString="
metadata=res://*/Northwind.csdl|
res://*/Northwind.ssdl|
res://*/Northwind.msl;
provider=System.Data.SqlClient;
provider connection string=
"Data Source=.\sqlexpress;
Initial Catalog=Northwind;
Integrated Security=True;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient"/>
public class NorthwindContext : DbContext
{
public NorthwindContext()
: base("name=Northwind_Entities")
{
}
}
5. Defining sets on a derived context
1) DbSet属性:指定集合为Entity类型
2) IDbSet属性
3) 只读set属性
public IDbSet<Unicorn> Unicorns{get{return Set<Unicorn>();}
6. 利用主键查找实体
DbSet的Find方法,如果用主键在上下文中查找不到实体,就会到数据库中查询。
1)通过主键查找实体
var unicorn=context.Unicorns.Find(3);//查询数据库
var unicornAgain=context.Unicorns.Find(3);//从当前上下文中返回相同的实例(没有查询数据库)
2) 通过主键和外键查找实体
var lady = context.LadiesInWaiting.Find(3, "The EF Castle");
7. 实体状态和保存
EntityState:Added、Unchanged、Modified、Deleted和Detached
1) 插入一个新的实体到上下文
当调用SaveChanges()才能插入到数据库中。
var unicorn = new Unicorn { Name = "Franky", PrincessId = 1};
context.Unicorns.Add(unicorn);//添加到上下文中
context.SaveChanges();//插入到数据库中
另一种插入方法:
var unicorn = new Unicorn { Name = "Franky", PrincessId = 1};
context.Entry(unicorn).State = EntityState.Added;
context.SaveChanges();
在当前实体的关联实体中添加新的对象:
// Add a new princess by setting a reference from a tracked unicorn
var unicorn = context.Unicorns.Find(1);
unicorn.Princess = new Princess { Name = "Belle" }; // Add a new unicorn by adding to the collection of a tracked princess
var princess = context.Princesses.Find(2);
princess.Unicorns.Add(new Unicorn { Name = "Franky" }); context.SaveChanges();
8. DbContext中的T-SQL查询
1) SQL语句查询实体
var unicorns = context.Unicorns.SqlQuery(
"select * from Unicorns").ToList();
2) SQL语句查询非实体类型
var unicornNames = context.Database.SqlQuery<string>(
"select Name from Unicorns").ToList();
3) 执行SQL命令
context.Database.ExecuteSqlCommand(
"update Unicorns set Name = 'Franky' where Name = 'Beepy'");
使用EF 4.1的DbContext的方法大全的更多相关文章
- EF Code First、DbContext
EF Code First.DbContext 对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念一下泉涌而出,犹如当头一棒,的确有点不知所 ...
- [OC][转]UITableView属性及方法大全
Tip: UITableView属性及方法大全 (摘录地址) p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 1 ...
- JS去掉首尾空格 简单方法大全(原生正则jquery)
JS去掉首尾空格 简单方法大全 var osfipin= ' http://www.cnblogs.com/osfipin/ '; //去除首尾空格 osfipin.replace(/(^\s*)|( ...
- js跳转页面方法大全
js跳转页面方法大全<span id="tiao">3</span><a href="javascript:countDown"& ...
- Java获取各种常用时间方法大全
Java获取各种常用时间方法大全 package cc.javaweb.test; Java中文网,Java获取各种时间大全 import java.text.DateFormat; import j ...
- php文件上传大小限制的修改方法大全
php文件上传大小限制的修改方法大全 基本就是修改maxsize选项,当然为了提高上传文件的成功率,还需要设置超时时间等. 文章如下: [php文件上传]php文件上传大小限制修改,phpmyadmi ...
- [Java]读取文件方法大全(转)
[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** ...
- 网站开发进阶(二十六)js刷新页面方法大全
js刷新页面方法大全 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有 ...
- JavaScript数组方法大全(推荐)
原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...
随机推荐
- 泛微 e-cology OA 远程代码执行漏洞复现
0x00 前言 Poc已在github公开,由于环境搭建较为复杂,所以我在空间搜索引擎中找了国外的网站进行复现 如果有想自行搭建环境复现的可以在公众号内回复“泛微环境”即可获取源码及搭建方式 0x01 ...
- Tomcat项目内存参数调优
一.常见的Java内存溢出有以下三种: 1. Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出 解释说明:JVM在启动的时候会自动设置JV ...
- Maven模块化搭建总结
1.Maven插件在eclipse的安装 windows——>preferences——>Maven——>installations——>add——>installati ...
- Convert 输入字符串的格式不正确
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- 如何打开.ipynb文件
1,GitHub 中可以直接打开 .ipynb 文件. 2,可以把 .ipynb 文件对应的下载链接复制到 https://nbviewer.jupyter.org/ 中查看.
- MongoDB 4.2 新特性解读 (转载)
MongoDB World 2019 上发布新版本 MongoDB 4.2 Beta,包含多项数据库新特性,本文尝试从技术角度解读. Full Text Search MongoDB 4.2 之前,全 ...
- H5如何实现关闭当前页面,跳转到新页面?
小程序有此功能的跳转方法. 那么H5如何实现该功能? 很简单. location.replace('new.html') 这个方法可以实现 关闭当前页面,跳转到新页面 的效果. 而 windo ...
- 1-移远GSM/GPRS M26 模块 Mini板 开发板(使用说明)
板子预览 引脚说明 供电 关于串口电压匹配引脚: 上面一版朋友测试反应的问题 (上面的内容不删除,因为已经出售了1套) 1,源码开发完以后,烧录完成 PWRKEY按键不能使用了,需要断电上电,那么就需 ...
- 第03组 团队git现场编程实战
1.组员职责分工 张逸杰:复制监督整个编程任务的进程以及协助组员编程 黄智锋.刘汪洋:负责UI设计 苏凯婷.鲍冰如:爬取数据并负责测评出福州最受欢迎的商圈 陈荣杰.杨锦镔:爬取数据并负责测评出福州人均 ...
- linux命令之------More命令
More命令 1)作用:命令类似cat,不过会以一页一页的形式显示,更方便使用者逐页阅读. 2)-num:一次显示的行数 3)-d:提示使用者,在画面下方显示[Press space to conti ...