• 使用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= 
             &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'");

     

  • 相关阅读:
    Linux下数据库备份恢复过程
    BMC 安装操作系统以及 驱动的处理
    vCenter简单查看多少虚拟机在开机状态和一共多少虚拟机
    PDB自动启动以及Oracle Pfile的参数修改示范
    Oracle 测试环境 数据库安装过程
    CentOS Mininal 安装VMtools的方法
    日常工作 数据库中表与索引占用磁盘的简单分析
    Oracle数据库 查看表是否是 索引组织表的方法
    zabbix 使用问题两个--中文乱码,以及监控ESXi下的虚拟机
    Zabbix的简单使用
  • 原文地址:https://www.cnblogs.com/wolfocme110/p/5600458.html
Copyright © 2020-2023  润新知