使用EF 4.1的DbContext

DbContext简单用法

使用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= 
         &quot;Data Source=.\sqlexpress; 
               Initial Catalog=Northwind; 
               Integrated Security=True; 
               MultipleActiveResultSets=True&quot;" 
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

时间: 2024-10-06 19:18:27

使用EF 4.1的DbContext的相关文章

使用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 c

EF Entity Framework Core DBContext中文文档

Add(Object) 以添加状态开始跟踪给定的实体和任何其他尚未被跟踪的可访问实体,以便在调用SaveChanges()时将它们插入数据库.使用State设置单个实体的状态. Add<TEntity>(TEntity) 以添加状态开始跟踪给定的实体和任何其他尚未被跟踪的可访问实体,以便在调用SaveChanges()时将它们插入数据库.使用State设置单个实体的状态. AddAsync(Object, CancellationToken) 以添加状态开始跟踪给定的实体和任何其他尚未被跟踪的

011.EF实体框架(入门)

1>ASP.NET MVC开发中模型的实现方法 模型的实现方法 两种方法1手动2自动(工具 EF)1.1手动创建模型(写好模型元数据)[练习过了 项目!] 前提条件:先手动创建数据库和表 (模型:实体类,实体访问类,Sqlhelper) (Sqlhelper使用ADO.NET传统方法实现) 1.2使用EF(Entity Framework:实体框架)创建模型 2>EF的概念2.1什么是EF***EF是 实体框架 (Entity Framework)的简称,***EF 可以用来定义模型类并操作数

ASP.NET EF(LINQ/Lambda查询)

EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动导入MVC程序集,因为默认.NET环境(GAC)中没有这个程序集 1 create database MyFirstEF 2 on primary 3 ( 4 name='MyFirstEF.mdf', 5 --修改为自己电脑上SQL DB路径 6 filename='E:\ProgramMSSQL

EF CodeFirst 初识

随着EntityFramework的发展,原先的三种方式,{Code First ,Model First,Database First }  CodeFirst基本摆脱了另外两种方式 成为了 最受欢迎的一种编程模型. 我们通过先编写代码,然后自动生成数据库. 程序员只需专心的面向对象写代码,而无需再写烦人的各种Sql语句. 新建控制台项目,通过Nuget引入EF库 增加两个类 public class Blog { public string ID { get; set; } public s

MVC+UnitOfWork+Repository+DomainObject+EF 之我见

UnitOfWork+Repository模式简介: 每次提交数据库都会打开一个连接,造成结果是:多个连接无法共用一个数据库级别的事务,也就无法保证数据的原子性.一致性.解决办法是:在Repository的CRUD操作基础上再包装一层,提供统一的入口,让服务层调用.同一个UnitOfWork实例对象下所有的Repository都共同一个数据库上下文对象(ps:EF用的是DbContext),也就是共用一个事物.提交数据库时,只要有一个操作失败,那么所有的操作都被视为失败. 项目结构: 关键代码:

EF 通用数据层父类方法小结

MSSql 数据库 数据层 父类 增删改查: using System;using System.Collections.Generic;using System.Data;using System.Data.Entity;using System.Data.Entity.Infrastructure;using System.Linq;using System.Linq.Expressions;using System.Reflection;using System.Text; namespa

.NET EF 框架-实现增删改查

声明一个EF上下文对象 Model dbContext=new Model(); 添加操作(向表中插入一条数据) //声明一个表的实体 Contact contact =new Contact(); //向表中的字段添加数据 contact.Name="张三"; contact.EnrollmenDate=DateTime.Now; //做插入操作 dbContext.Contacts.Add(contact); dbContext.SaveChanges(); 修改操作(根据ID修改

MVC+UnitOfWork+Repository+EF 之我见

UnitOfWork+Repository模式简介: 每次提交数据库都会打开一个连接,造成结果是:多个连接无法共用一个数据库级别的事务,也就无法保证数据的原子性.一致性.解决办法是:在Repository的CRUD操作基础上再包装一层,提供统一的入口,让服务层调用.同一个UnitOfWork实例对象下所有的Repository都共同一个数据库上下文对象(ps:EF用的是DbContext),也就是共用一个事物.提交数据库时,只要有一个操作失败,那么所有的操作都被视为失败. 项目结构: 关键代码: