C#EntityFramework(EF基础)
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基础)相关推荐
- 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 ...
- MVC之实体框架(数据持久化框架)EntityFrameWork(EF)
EF - EntityFrameWork 中文名:实体框架(数据持久化框架) 1.使用EF查询(Linq to EF) 1.1使用标准查询运算符来查询 OumindBlogEntities db = ...
- C# EF 基础操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- EntityFramework(EF)贪婪加载和延迟加载的选择和使用
贪婪加载:顾名思议就是把所有要加载的东西一 次性读取 1 using (var context = new MyDbContext()) 2 { 3 var orders = from o in co ...
- EntityFramework Core 2.0执行原始查询如何防止SQL注入?
前言 接下来一段时间我们来讲讲EntityFramework Core基础,精简的内容,深入浅出,希望为想学习EntityFramework Core的童鞋提供一点帮助. EntityFramewor ...
- 打造更好用的 EF 自动审计
打造更好用的 EF 自动审计 Intro 上次基于 EF Core 实现了一个自动审计的功能,详细可以参考 EF Core 数据变更自动审计设计,虽然说多数情况下可以适用,但是因为要显式继承于一个 A ...
- ABP官方文档翻译 9.2 Entity Framework Core
Entity Framework Core 介绍 DbContext 配置 在Startup类中 在模块PreInitialize方法中 仓储 默认仓储 自定义仓储 应用程序特定基础仓储类 自定义仓储 ...
- NET主流ORM框架分析
接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 所有的OR ...
- C#代码审计实战+前置知识
C#了解 菜鸟教程:https://www.runoob.com/csharp/csharp-intro.html C# 基于 C 和 C++ 编程语言,是一个简单的.现代的.通用的.面向对象的编程语 ...
最新文章
- 消息发送样例介绍和步骤分析
- 转载:Windows CE内存管理
- AppScan api登录接口 postman_如何通过Postman调用EDI系统的API?
- mysql oracle 表空间大小_最简单的查询表空间的使用量、剩余量的方法 - Focus on Oracle、MySQL and GNU/Linux...
- 解决:安装Widget插件提醒已安装却不见界面
- Vue cli 入门补充
- zookeeper部署
- 仿某某网站模板thinkphp_7个免费PPT模板网站,远离撞P的尴尬
- c语言中取反符号的理解
- Android 外网远程连接真机进行开发调试
- 被逼无奈,沉默寡言的程序员也开始露脸拍视频了
- 没键盘计算机能启动吗,电脑没有接鼠标键盘为什么会影响电脑的正常开机?
- 我认识的文华财经指标期货高手一年时间从2万到30万的实际经历
- 印刷ERP解决方案推荐
- 小清新风格的微信公众号文章排版有这些素材就够了
- 后台管理制作首页组件及ui框架的使用
- 遇到长GC停顿、CPU满载、内存泄露、JVM崩溃等高频问题,看这里!
- 目前住院病人主要由护士护理,这样不仅需要大量护士,而且由于不能随时观察病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的监护系统,写出问题定义和分析系统可行性(软件工程导论)
- 谷歌浏览器驱动器下载网址
- 数据库的横向和纵向分表