EntityFramework 二
[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 不会自动删除重建数据库
}
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写法都能被支持,出错的时候,把那条语句单独提取出来用变量接收一下就行了
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 二的更多相关文章
- SqlServer切换MySql总结
最近项目任务不多就琢磨着把SqlServer换成MySql(数据访问使用的ado.net),初步想了下方案有2种: 方案一:继续使用ado.net,重写所有的sql语句 优势:数据访问效率高,改写Sq ...
- 使用EF Oracle实现DevExpress绑定大数据的ServerMode模式
前提:需要引入EntityFramework组件,注意几个使用点后使用上其实比较简单. 一.引入Oracle EF支持组建 1.可手动引入附件中的DLL(需手动合并web.config配置) 2.也可 ...
- Entity Framework技术导游系列 开篇 (转)
在微软平台写程序有年头了,随着微软数据存取技术的持续演化,我在程序中先后使用过ODBC.DAO.ADO.ADO.NET.LINQ to SQL. Entity Framework这些技术. 近几年来, ...
- EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~再续~添加对各只读服务器的心跳检测
回到目录 上一讲中基本实现了对数据库的读写分离,而在选择只读数据库上只是随机选择,并没有去检测数据库服务器是否有效,如服务器挂了,SQL服务停了,端口被封了等等,而本讲主要对以上功能进行一个实现,并对 ...
- EF架构~CodeFirst模型下的数据初始化
回到目录 我为什么会来 在传统的大型系统设计中,数据库建模是个比开发更早的环节,先有数据库,然后是ORM模型,最后才是开发程序,而这种模型在EF出现后发生了转变,而且有可能将来会被code first ...
- [转]Entity Framework技术导游系列开篇与热身
学习Entity Framework技术期间查阅的优秀文章,出于以后方便查阅的缘故,转载至Blog,可查阅原文:http://blog.csdn.net/bitfan/article/details/ ...
- Entity Framework技术导游系列开篇与热身
在微软平台写程序有年头了,随着微软数据存取技术的持续演化,我在程序中先后使用过ODBC.DAO.ADO.ADO.NET.LINQ to SQL. Entity Framework这些技术. 近几年来, ...
- 一步一步学EF系列2【最简单的一个实例】
整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...
- 一步一步学EF系列一【最简单的一个实例】
整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...
随机推荐
- 一个很好的JS,ASP二级下拉框联动。
在我们制作网站会员注册信息时,一般会涉及到填写自己所在省/市,如果用input或textarea做成填写形式不太理想.所以大部分网站都会选择联动下来列表形式,做起来也不算很复杂,同时看上去也很轻松. ...
- pandas之cut(),qcut()
功能:将数据进行离散化 可参见博客:https://blog.csdn.net/missyougoon/article/details/83986511 , 例子简易好懂 1.pd.cut函数有7个参 ...
- PHP面向对象(一)
1 面向对象介绍 1.1 介绍 面向对象是一个编思想. 编程思想有面向过程和面向对象. 面向过程: 编程思路集中的是过程上 面向对象: 编程思路集中在参与的对象 1.2 好处 多人合作方便 ...
- python对大文件的处理
多线程框架中采取queue来实现线程间资源的互斥. 在文件过大的情况下,如果都读入内存的话,占用内存就太多了. 这里手动实现了一个多线程调用文件迭代器来使用f.next() # -*- coding: ...
- nginx反向代理时保持长连接
·[场景描述] HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟. 如果我们使用了nginx去作为 ...
- 【ACM-ICPC 2018 沈阳赛区网络预赛 G】Spare Tire
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让你求出1..n中和m互质的位置i. 让你输出∑ai 这个ai可以oeis一波. 发现是ai = i(i+1) 1..n中和m互质的 ...
- 关于ajax异步请求不到数据的问题 302跨域请求
项目大致问题是这样的 在线咨询模块的数据是通过ajax异步加载来请求到数据,然后动态解析并且显示 前台页面的请求代码 后台action: 另外就是这个项目还有一个登陆权限的认证,如果不登录后台或者登录 ...
- struts配置 WEB得拷贝要注意的事项
原始WEB文件tutoral===>新文件tutoralTest 要将靠拷贝的文件的contextRoot修改(一定要修改)
- POJ--2112--Optimal Milking【Floyd+Dinic+二分答案】
链接:http://poj.org/problem?id=2112 题意:有k个挤奶器.编号1~k,c头牛,编号k+1~k+c,每一个挤奶器最多能给m头牛挤奶,给你一个k+c的邻接矩阵.要求每头牛都能 ...
- C语言实现使用动态数组实现循环队列
我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作. 因为数组的大小已经被指定.无法动态的扩展. 所以在这篇博客中,我换成动态数组来实现. 动态数组能 ...