C#EntityFramework(EF基础)

0.App.config 设置链接串

<connectionStrings><add name="con" connectionString="server=.;database=zhazhabade;uid=sa;pwd=sa" providerName="System.Data.SqlClient"/></connectionStrings>

1.设置上下文

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EntityFramework;namespace EntityFramework_Zha
{class BookDemo3Context:DbContext    //上下文{public BookDemo3Context() : base("con")   //nameOrConnectionString{Database.SetInitializer<BookDemo3Context>(null);}protected override void OnModelCreating(DbModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();}public DbSet<BookType> BookTypes { get; set; }public DbSet<Book> Bools { get; set; }}
}

2.设置models

class BookType{public long Id { get; set; }[StringLength(20),Required]   //不允许为空public  string Name { get; set; }public DateTime? CreateTime { get; set; }}
class Book{public long Id { get; set; }public string Title { get; set; }public string Descr { get; set; }public DateTime CreateTime { get; set; }=DateTime.Now;[ForeignKey(nameof(BookType))]   //外键public long BookTypeId { get; set; }public BookType BookType { get; set; }}

3.接下来 配置migrations

(1)打开程序包管理控制台

enable-migrations   //激活后 会出现一个Migrations的文件夹  和configurations的配配置文件

configurations.cs

namespace EntityFramework.Migrations
{using System;using System.Data.Entity;using System.Data.Entity.Migrations;using System.Linq;internal sealed class Configuration : DbMigrationsConfiguration<EntityFramework_Zha.BookDemo3Context>{public Configuration(){AutomaticMigrationsEnabled = false;}protected override void Seed(EntityFramework_Zha.BookDemo3Context context){//  This method will be called after migrating to the latest version.//  You can use the DbSet<T>.AddOrUpdate() helper extension method//  to avoid creating duplicate seed data.//这样可以在迁移的时候直接拆入//context.BookTypes.AddOrUpdate(new BookType{Name="散文"} );//context.BookTypes.AddOrUpdate(new BookType{Name="科幻"} );//context.BookTypes.AddOrUpdate(new BookType{Name="诗歌"} );//context.BookTypes.AddOrUpdate(new BookType{Name="儿童"} );}}
}

(2)打开程序包管理控制台

add-migrations createdb //后面那个是名字

(3)打开程序包管理控制台

update-database   //更新数据库

4.常用的操作

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EntityFramework;namespace EntityFramework_Zha
{ class Program{static void Main(string[] args){using (BookDemo3Context db = new BookDemo3Context()){db.Database.Log=(o) =>{Console.WriteLine(o.ToString());};//状态:数据取出:Unchanged(持久态)  Remove :deleted  保存:detached (游离态)  跟新:Modifiedvar type = new BookType() { Id = 3 };db.Entry(type).State = System.Data.Entity.EntityState.Unchanged;  //假设从数据库取出type.Name = "djdkj";db.Entry(type).State = System.Data.Entity.EntityState.Deleted;  //假设从数据库删除db.SaveChanges();//更新var type2 = new BookType(){Id = 2,Name = "zhazha"};db.Entry(type2).State = EntityState.Modified;  //假设更新db.SaveChanges();foreach (var item in db.BookTypes){Console.WriteLine(item.Name);}//查找的两种statevar item1 = db.BookTypes.AsNoTracking().FirstOrDefault(m => m.Name == "科幻");  //detachedvar item2 = db.BookTypes.FirstOrDefault(m => m.Name == "科幻");    //unchangeConsole.WriteLine($"state1:{db.Entry(item1).State},state1:{db.Entry(item2).State}" );}Console.ReadLine();}}
}

C#EntityFramework(EF基础)相关推荐

  1. linux db2创建存储过程语法,EF基础一-db2存储过程中循环语句while do...-oracle 创建DBLINK_169IT.COM...

    EF基础,从0开始: using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  2. MVC之实体框架(数据持久化框架)EntityFrameWork(EF)

    EF - EntityFrameWork 中文名:实体框架(数据持久化框架) 1.使用EF查询(Linq to EF) 1.1使用标准查询运算符来查询 OumindBlogEntities db = ...

  3. C# EF 基础操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. EntityFramework(EF)贪婪加载和延迟加载的选择和使用

    贪婪加载:顾名思议就是把所有要加载的东西一 次性读取 1 using (var context = new MyDbContext()) 2 { 3 var orders = from o in co ...

  5. EntityFramework Core 2.0执行原始查询如何防止SQL注入?

    前言 接下来一段时间我们来讲讲EntityFramework Core基础,精简的内容,深入浅出,希望为想学习EntityFramework Core的童鞋提供一点帮助. EntityFramewor ...

  6. 打造更好用的 EF 自动审计

    打造更好用的 EF 自动审计 Intro 上次基于 EF Core 实现了一个自动审计的功能,详细可以参考 EF Core 数据变更自动审计设计,虽然说多数情况下可以适用,但是因为要显式继承于一个 A ...

  7. ABP官方文档翻译 9.2 Entity Framework Core

    Entity Framework Core 介绍 DbContext 配置 在Startup类中 在模块PreInitialize方法中 仓储 默认仓储 自定义仓储 应用程序特定基础仓储类 自定义仓储 ...

  8. NET主流ORM框架分析

    接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 所有的OR ...

  9. C#代码审计实战+前置知识

    C#了解 菜鸟教程:https://www.runoob.com/csharp/csharp-intro.html C# 基于 C 和 C++ 编程语言,是一个简单的.现代的.通用的.面向对象的编程语 ...

最新文章

  1. 消息发送样例介绍和步骤分析
  2. 转载:Windows CE内存管理
  3. AppScan api登录接口 postman_如何通过Postman调用EDI系统的API?
  4. mysql oracle 表空间大小_最简单的查询表空间的使用量、剩余量的方法 - Focus on Oracle、MySQL and GNU/Linux...
  5. 解决:安装Widget插件提醒已安装却不见界面
  6. Vue cli 入门补充
  7. zookeeper部署
  8. 仿某某网站模板thinkphp_7个免费PPT模板网站,远离撞P的尴尬
  9. c语言中取反符号的理解
  10. Android 外网远程连接真机进行开发调试
  11. 被逼无奈,沉默寡言的程序员也开始露脸拍视频了
  12. 没键盘计算机能启动吗,电脑没有接鼠标键盘为什么会影响电脑的正常开机?
  13. 我认识的文华财经指标期货高手一年时间从2万到30万的实际经历
  14. 印刷ERP解决方案推荐
  15. 小清新风格的微信公众号文章排版有这些素材就够了
  16. 后台管理制作首页组件及ui框架的使用
  17. 遇到长GC停顿、CPU满载、内存泄露、JVM崩溃等高频问题,看这里!
  18. 目前住院病人主要由护士护理,这样不仅需要大量护士,而且由于不能随时观察病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的监护系统,写出问题定义和分析系统可行性(软件工程导论)
  19. 谷歌浏览器驱动器下载网址
  20. 数据库的横向和纵向分表

热门文章

  1. 希望传说手游如何在电脑上玩 希望传说手游模拟器教程
  2. 重装Windows系统 (以联想Y700重装Win10专业版为例)
  3. 使用A*算法求迷宫最短路径问题
  4. PPT、Word文档、Excel表格 免费模板资源
  5. 院士解读:海洋研究为何需要超级计算机?
  6. Ubuntu 11.04安装pcsx2模拟器简明过程
  7. spring-银行转账系统
  8. office2016 下载直通车
  9. 最简单的神经网络的例子,神经网络简单应用实例
  10. 单片机SFR是什么意思?