特性
用来具体的设置数据库属性
 
[Table("表名")]//设置表名
public class User
{
[Key] //设置主键
[Column("列名")] //设置列名
[DatabaseGenerated(DatabaseGeneratedOption.None)]
//None 不自增
//Identity 自增
//Computed 数据库计算生成
public int Id{get;set;} [StringLength()] //varchar长度 public int Name{get;set;} [Required] //必要的(非空)
[Column(TypeName="varchar")] //类型设置 public int LoginName{get;set;} public int Password{get;set;} [foreignKey("stu")] //设置外键
public int sid{get;set;}
public student stu{get;set;} Nullable<int> age{get;set;} //让int 类型可以赋空值
//缩写为 int? age [NotMapped] //不在数据库生成
public string SumMoney{get;set;}
}

EF生成数据库设置

public SQLContext():base("conStr")
{
Database.SetInitializer(new DropCreateDatabaseAlways<SQLContext>());//生成数据库设置
Database.SetInitializer<SQLContext>(null);
//DropCreateDatabaseAlways<SQLContext> 执行一次删除重建一次数据库
//DropCreateDatabaseIfModelChanges<SQLContext> 当数据库模型发生变化时才删除重建数据库
//null 不会自动删除重建数据库
}
long 类型 长度
922 0000 0000 0000 0000
 
输出EF所做的操作
context.Database.Log = (msg) =>
{
Console.WriteLine(msg);
}

联表

EF做联表操作时,使用Include

foreach(var item in context.stu.Include("表名"))
{ }
//或者
foreach(var item in context.stu.Include(m=>m.User)) //lambda
{ } //只拿出指定的列
foreach(var item in context.stu.Include(m=>m.User).Select(m=>new {m.title,m.user,...}))
{
}

EF中在属性中加上virtual,它就会变成懒加载,在使用时才会加载

直接用sql语句操作数据库,即使在上下文中没有的表也可以操作

context.Database.ExecuteSqlCommand("sql语句");

直接用sql语句操作数据库,并把结果封装到一个模型类中

context.Database.SqlQuery<封装的类>("sql语句");

EF不是所有lambda写法都能被支持,出错的时候,把那条语句单独提取出来用变量接收一下就行了

EF 对象的状态
Detached(游离态),Unchanged(未修改),Added(新增),Deleted(删除),modified(被修改)
 
游离态 → 保存到数据库 → 未修改
游离态 → 添加(集合) → 新增(Add) → 保存到数据库 (SavaChange)→ 未修改
未修改 → 修改属性→ 被修改 → 保存到数据库(SavaChange) → 未修改
未修改 → 删除(集合) → 删除 → 游离态
 
强制修改对象的状态可以省掉一些状态的转换,提高性能
如:查询出的数据为未修改,通过remove变为删除状态,保存后就会删除这条数据
        但如果直接把数据从未修改 改为 删除状态,则不需要remove,直接保存即可删掉这条数据
Context.Entry(对象).State = EntityState.xxxx;//强制修改对象状态

保存时不进行验证

Context.Configuration.ValidateOnSaveEnabled = false;

加上AsNoTracking() 可以让查询出来的对象直接变成游离态

Context.stu.AsNoTracking().Where(XXX);

关闭级联删除检测

protected override void OnModelCreating(DbModelBuilder modelBuider)
{
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
}

当不确定是什么对象时使用set (例如使用泛型时)

Context.set<T> //set中给什么对象,他就会相当于什么对象使用

EntityFramework 二的更多相关文章

  1. SqlServer切换MySql总结

    最近项目任务不多就琢磨着把SqlServer换成MySql(数据访问使用的ado.net),初步想了下方案有2种: 方案一:继续使用ado.net,重写所有的sql语句 优势:数据访问效率高,改写Sq ...

  2. 使用EF Oracle实现DevExpress绑定大数据的ServerMode模式

    前提:需要引入EntityFramework组件,注意几个使用点后使用上其实比较简单. 一.引入Oracle EF支持组建 1.可手动引入附件中的DLL(需手动合并web.config配置) 2.也可 ...

  3. Entity Framework技术导游系列 开篇 (转)

    在微软平台写程序有年头了,随着微软数据存取技术的持续演化,我在程序中先后使用过ODBC.DAO.ADO.ADO.NET.LINQ to SQL. Entity Framework这些技术. 近几年来, ...

  4. EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~再续~添加对各只读服务器的心跳检测

    回到目录 上一讲中基本实现了对数据库的读写分离,而在选择只读数据库上只是随机选择,并没有去检测数据库服务器是否有效,如服务器挂了,SQL服务停了,端口被封了等等,而本讲主要对以上功能进行一个实现,并对 ...

  5. EF架构~CodeFirst模型下的数据初始化

    回到目录 我为什么会来 在传统的大型系统设计中,数据库建模是个比开发更早的环节,先有数据库,然后是ORM模型,最后才是开发程序,而这种模型在EF出现后发生了转变,而且有可能将来会被code first ...

  6. [转]Entity Framework技术导游系列开篇与热身

    学习Entity Framework技术期间查阅的优秀文章,出于以后方便查阅的缘故,转载至Blog,可查阅原文:http://blog.csdn.net/bitfan/article/details/ ...

  7. Entity Framework技术导游系列开篇与热身

    在微软平台写程序有年头了,随着微软数据存取技术的持续演化,我在程序中先后使用过ODBC.DAO.ADO.ADO.NET.LINQ to SQL. Entity Framework这些技术. 近几年来, ...

  8. 一步一步学EF系列2【最简单的一个实例】

    整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...

  9. 一步一步学EF系列一【最简单的一个实例】

    整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...

随机推荐

  1. BZOJ1143: [CTSC2008]祭祀river 网络流_Floyd_最大独立集

    Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都 会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组 ...

  2. 【udacity】机器学习-2模型验证

    Evernote Export 1.模型的评估与验证简介 机器学习通常是大量传入数据,然后会有一些关于数据的决策.想法和摘要. 2.模型评估 评估模型使用的是各种数据分析的方法,至少需要使用pytho ...

  3. HTML5新特性之文件和二进制数据的操作 Blob对象

    HTML5新特性之文件和二进制数据的操作 1.Blob对象 2.FileList对象 3.File对象 4.FileReader 对象 5.URL对象

  4. 《Exception》第八次团队作业:Alpha冲刺

    一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...

  5. nmon分析文件各sheet含义

    sheet名称sheet含义 SYS_SUMM系统汇总,蓝线为cpu占有率变化情况,粉线为磁盘IO的变化情况: AAA关于操作系统以及nmon本身的一些信息: BBBB系统外挂存储容量以及存储类型: ...

  6. JAVA基础总结【面试】

    前言 近间陆续面试了不少的求职的前(JAVA).后(WEB)端开发人员,包括实习生.应届毕业生.一两年工作经验的.也有三四年工作经验的,也算见过了比较多的开发人员,想在这里做个总结,本次主要讲一讲面试 ...

  7. 使用jekyll配置一个自己的blog

    使用coding.net上提供的pages服务来配置一个自己的站点 提示:下载这些软件,最好能FQ,有些链接是国外的,淘宝的ruby镜像已经不提供服务了 1. 安装Ruby 2. 安装Rubygems ...

  8. 洛谷——P1802 5倍经验日

    https://www.luogu.org/problem/show?pid=1802#sub 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好 ...

  9. 洛谷——P1968 美元汇率

    https://www.luogu.org/problem/show?pid=1968#sub 题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程 ...

  10. 【我所认知的BIOS】—&gt; uEFI AHCI Driver(6) AtaAtapiPassThruSupported的局部变量们

    [我所认知的BIOS]-> uEFI AHCI Driver(6) - AtaAtapiPassThruSupported的局部变量们 LightSeed 5/7/2014 前面5个篇文章把EF ...