`
baobeituping
  • 浏览: 1067858 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

使用EF 4.1的DbContext

    博客分类:
  • .NET
阅读更多

简述: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=
         &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'");

分享到:
评论

相关推荐

    MVC3+EF4.1学习系列(十)----MVC+EF处理树形结构

    我们使用的开发环境是Visual Studio 2010,数据库为SQL Server 2005,且我们将利用EF4.1的自动代码生成功能来简化数据库操作。 首先,让我们了解MVC3和EF4.1的基础。ASP.NET MVC3是一个模型-视图-控制器(Model-...

    EF4.1 Release Notes

    【EF4.1发布说明】是关于Entity Framework 4.1的重要更新介绍,这是一个针对.NET Framework 4.0的数据库开发框架的重大改进版本。Entity Framework(简称EF)是由微软开发的面向对象的ORM(对象关系映射)工具,它...

    EF4.1_code_first学习教程

    本教程旨在帮助初学者理解并掌握 Entity Framework 4.1 (简称 EF4.1) 的 Code First 方法,这是一种灵活且易于使用的对象关系映射 (ORM) 技术。通过 Code First,开发者可以直接从实体类创建数据库模式,无需预先...

    DBcontext应用于已存在数据库

    EF4.1有三种方式来进行数据操作及持久化。分别是Database-First,Model-First,Code-first,前面都已经简单介绍过了.下面简单小结一下

    EntityFramework4.1RC

    EF 4.1有哪些新玩新儿?  1. 首先当然是DbContext API,它是基于以前版本中的ObjectContext和其他一些类型抽象出的一个简单的API,针对常用开发场景和编程模式进行了优化。DbContext可以被于Database First, Model...

    EF使用教程

    EF 使用教程 EF(Entity Framework)是一种对象关系映射(O/R Mapping)解决方案,由微软以 ADO.NET 为基础发展,现已经包含在 Visual Studio 2008 Service Pack 1 及 .NET Framework 3.5 Service Pack 1 中发布。...

    MVC+EFMVC+EF

    在`MVC3+EF4_1学习系列`中,可能包含了一系列关于如何在MVC3项目中使用EF4.1的教程,包括基本的配置、数据库迁移、模型生成、数据库操作等。 `MusicStore`可能是一个示例应用,展示了如何在实际的MVC项目中结合EF...

    EF教程,entity framework教程

    在第四部分,教程通常会展示如何在已有的数据库上应用`DbContext`,这是EF 4.1引入的一个新特性,它比旧的ObjectContext更简洁、更易用。`DbContext`提供了对数据库操作的基本接口,包括添加、删除、查询和保存实体...

    EF4CodeFirst

    ### EF4.1 CodeFirst 约定及配置详解 #### 一、默认约定 **1.1 模型约定** - **简单CLR类型:** 如`string`将默认映射为`nvarchar(128)`。 - **实体类型:** 定义业务逻辑的基本单元。 - **实体List集合:** 通常...

    EFMVC源码资料

    这是EF4.1引入的新特性,简化了开发流程。 2. **Database First**: 先有数据库,EF根据数据库创建模型,适合已有数据库的项目。 3. **Model First**: 从设计模型开始,然后生成数据库。这种方式强调模型在开发过程中...

    Entity Framework

    EF 4.1版本引入了新的编码模式,使得开发者能够更简单高效地使用Entity Framework进行数据操作。在这个模式中,有几个核心的组件:DbContext、DbSet、ChangeTracker和验证API。 首先,DbContext是一个核心类,它...

    MvcAppMySQL

    在EF 4.1中,引入了"Code First"开发模式,开发者可以先定义实体类,然后由EF自动生成数据库结构。这种方式使得开发流程更加灵活,同时减少了数据库与业务逻辑之间的耦合。 **MySQL** MySQL是一种广泛使用的开源...

    .net MVC3+EF完整案例.rar

    EF4.1引入了Code First开发模式,使得开发者可以直接通过C#类定义数据库结构,极大地提高了开发效率。在MvcBookStore案例中,我们可以看到如何使用EF来创建和管理数据库,以及如何通过DbContext进行数据查询和更新。...

    entity framework

    在使用EF时,需要注意版本兼容性问题,例如EntityFramework41.exe可能是针对.NET Framework 4.1的版本。同时,License.rtf文件通常包含了软件的许可协议信息,确保在使用EF时遵守相关的授权条款。 总之,Entity ...

    CodeFirstDemo.rar

    CodeFirst是EF4.1引入的新工作流,开发者首先创建.NET类和上下文,然后EF会根据这些类自动生成数据库。这种方式强调了代码的灵活性和版本控制。`EFDemo.CodeFirst.Test`可能包含针对CodeFirst模式的测试用例。 3. ...

    EntityFramework.6.0.0

    3. **数据库迁移(Database Migrations)**:这是EF 4.1引入的一项功能,允许开发者在不丢失数据的情况下对数据库结构进行版本控制。当模型发生变化时,可以自动生成迁移脚本来更新数据库结构。 4. **仓储...

    LINQ & Entity Framework 应用实例

    4. **ObjectContext和DbContext**:两者都是与数据库交互的主要接口,DbContext是ObjectContext的改进版,更适合EF4.1及更高版本。 5. **Auto-Mapping**:自动映射功能可以自动生成实体类和数据库之间的映射,简化...

Global site tag (gtag.js) - Google Analytics