zoukankan      html  css  js  c++  java
  • 《转》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'");

    原文http://www.cnblogs.com/joe62/archive/2011/04/10/2011793.html 

    【版权所有@ithuo】 【博客地址 http://www.cnblogs.com/ithuo】 可以转载,但请注明出处并保持博客超链接,有不正确的地方请不吝赐教,谢谢大家的帮助与支持!
  • 相关阅读:
    Android WebView 获取网页的标题
    Android APK 文件自动安装
    DownloadManager 的使用
    Android Java 自定义异常
    Android NDK
    android assets文件夹资源的访问
    GitHub 基本常用知识解答2
    hbuilder egit插件的安装使用--项目文件丢失的教训
    微软收购跨平台移动应用开发商Xamarin
    Android Study 之 初识ButterKnife(8.5.1)及简单运用
  • 原文地址:https://www.cnblogs.com/ithuo/p/4754027.html
Copyright © 2011-2022 走看看