1. Defining sets on a derived context

1) DbSet属性:指定集合为Entity类型

2) IDbSet属性

3) 只读set属性

public IDbSet<Unicorn> Unicorns{get{return Set<Unicorn>();}

2. 利用主键查找实体  
   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");

3. 实体状态和保存  
   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();

4.  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’");

.net mvc数据库操作添加数据的几中方法的更多相关文章

  1. (转载)MySQl数据库-批量添加数据的两种方法

    方法一:使用excel表格 方法二:使用insert语句(FileWriter批量写入) 使用excel表格 1.打开数据表,按照表的字段在excel中添加数据.注意:表中字段名必须和excel中的名 ...

  2. nhibernate操作sql2008数据库(添加数据失败)

    今天遇到一错误困了我一天,如此痛恨,遂记录于此: nhibernate框架+MVC模式搭的项目,添加数据时报错: "could not insert: [KXRMallManage.Mode ...

  3. ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )

    //TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...

  4. ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )

    一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: public function te ...

  5. mysql学习之通过文件创建数据库以及添加数据

    转自:http://blog.163.com/wujicaiguai@126/blog/static/170171558201411311547655/ 1.# 创建数据库语句 create data ...

  6. JDBC数据库之添加数据

    通过JDBC向数据库中添加数据,可以使用INSERT语句实现插入数据SQL语句,对于SQL语句中的参数可以只用占位符"?"代替,然后通过PreparedStatement对其赋值以 ...

  7. MVC 添加数据的三种方法

    1 通过Request接收数据,进行添加 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<d ...

  8. SqlServer 查看数据库、添加数据文件

    一.查看SqlServer实例的数据库列表 1).直接在SSMS(SqlServer Management Studio)管理工具里面 展开实例下面的所有数据库便可查看  2).使用Transact- ...

  9. MySql数据库操作之数据约束

    首先数据库的外键是数据库提供的一种完整性约束.在许多数据库的书上也会介绍到,然而对于外键这个完整性性约束究竟应该在数据库端实现,还是在项目业务端实现很多人有着不同的意见. 个人开发(小型应用).数据库 ...

随机推荐

  1. python2 与 python3 如何实现共存

    1.现在我本机系统已内置python2.6 2.下载进行源码安装 复制链接下载到 /root/mypackage,解压 接着 mkdir /usr/local/python3 然后在解压后的文件夹内执 ...

  2. puppeteer入门

    转自: https://www.jianshu.com/p/a89d8d6c007b 作者: ppCode puppeteer新手入门(chromium下载跳坑) ppCode 关注 2017.12. ...

  3. 【转】如何将MySQL数据目录更改为CentOS 7上的新位置

    本文转载自:http://www.leftso.com/blog/362.html 介绍 数据库随着时间的推移而增长,有时超过了文件系统的空间.当它们与操作系统的其他部分位于同一分区上时,也可能遇到I ...

  4. 洗礼灵魂,修炼python(56)--爬虫篇—知识补充—编码之url编码

    其实在最前面的某一篇博文里,是绝对提过编码的,有ASCII,有UTF-8,有GB2312等等,这些我绝对说过的. url编码 首先,Http协议中参数的传输是"key=value" ...

  5. 转:更改SQLServer实例默认字符集

    需求 安装数据库时,将字符集安装成了“SQL_Latin1_General_CP1_CI_AS”,现在需要将其更改为“Chinese_PRC_CI_AS”.   方法 重新生成系统数据库 ,然后还原配 ...

  6. 面向对象的封装与隐藏 this

    当我们创建一个对象的时候,我们可以通过‘对象.属性’的方式,对对象的属性进行赋值. 这里赋值操作要受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件. 但是实际问题中我们需要给这个属性 ...

  7. python 报错RuntimeError: dictionary changed size during iteration

    a = {':0} for b in list(a.keys()): if a[b] == 0: del a[b] print(a) 报错是因为在字典迭代期间改变字典大小 我们可以通过取出字典的键值, ...

  8. centos7下安装指定版本mysql5.7.23

    现在mysql版本已经到MySQL 8.0(GA)稳定版本了,所以需求是想简单又快速在centos7下安装指定版本例如MySQL 5.7(GA)版本有下面这种方法 首先需要到mysql官网这里下载对应 ...

  9. 命令行方式安装Pycharm

    sudo apt install snapd snapd-xdg-open snap refresh sudo snap install pycharm-professional --classic

  10. Java中实现多线程继承Thread类与实现Runnable接口的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中, ...