EntityFramework 学习 一 实体类型
我们为已存在的数据库创建EDM,EDM包含与数据库中表对应的实体。EF中有两种实体类型 POCO entity dynamic proxy entity
POCO Entity (Plain Old CLR Object):
POCO类是不依赖任何框架的类,它就想.net中普通的类,称作“Plain Old CLR Objects”
POCO实体类支持很多查询、添加、更新和删除行为
POCO例子
public class Student
{
public Student()
{
this.Courses = new List<Course>();
} public int StudentID { get; set; }
public string StudentName { get; set; }
public Nullable<int> StandardId { get; set; } public Standard Standard { get; set; }
public StudentAddress StudentAddress { get; set; }
public IList<Course> Courses { get; set; }
}
Dynamic Proxy (POCO Proxy):
Dynamic Proxy是运行时POCO的代理类,它就像是POCO的包装类,Dynamic Proxy允许延迟加载和自动变化跟踪
POCO满足以下条件才能成为Dynamic Proxy类
1.POCO必须是public访问
2.POCO不是密封类
3.POCO不是抽象类
4.每个导航属性必须声明为Public和virtual
5.每一个集合属性必须是ICollection<T>
6.ProxyCreationEnabled 选项必须是true
public class Student
{
public Student()
{
this.Courses = new HashSet<Course>();
} public int StudentID { get; set; }
public string StudentName { get; set; }
public Nullable<int> StandardId { get; set; } public virtual Standard Standard { get; set; }
public virtual StudentAddress StudentAddress { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
注意:默认的,Dynamic Proxy对每个实体都是可用的,然而,可用在上下文中通过设置ProxyCreationEnabled 选项不可用
context.Configuration.ProxyCreationEnabled = false;
在运行当中,Student类型将是 System.Data.Entity.DynamicProxies.Student

从Dynamic Proxy中获取实体的真正类型
可用使用ObjectContext.GetObjectType()方法找到真正的实体类型

实体可用有两种类型属性 Scalar 和Navigation
Scalar属性是实体中真实的值,例如,Student实体中的Scalar属性 象StudentId和StudentName,这符合Student表的列
导航属性:导航属性指向另一个关联的实体,Student有Standard属性作为导航属性
EntityFramework 学习 一 实体类型的更多相关文章
- EntityFramework 学习 一 创建实体数据模型 Create Entity Data Model
1.用vs2012创建控制台程序 2.设置项目的.net 版本 3.创建Ado.net实体数据模型 3.打开实体数据模型向导Entity Framework有四种模型选择 来自数据库的EF设计器(Da ...
- EntityFramework学习
本文档主要介绍.NET开发中两项新技术,.NET平台语言中的语言集成查询技术 - LINQ,与ADO.NET中新增的数据访问层设计技术ADO.NET Entity Framework.ADO.NET的 ...
- Entity Framework 教程——Entity Framework中的实体类型
Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...
- entityframework学习笔记--009-使用原生sql语句操作数据
1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: public class Pay ...
- WebApi系列~实际项目中如何使用HttpClient向web api发异步Get和Post请求并且参数于具体实体类型
回到目录 本讲比较实际,在WEB端有一个Index和Create方法,用来从web api显示实体列表数据和向api插入实体对象,这就是以往的网站,只不过是把数据持久化过程放到了web pai上面,它 ...
- Hibernate应用SQL查询返回实体类型
Hibernate应用SQL查询返回实体类型 Hibernate使用SQL查询返回实体类型 以前,使用SQL查询,结果放在 RS 结果集中,还要去转换影射到Java类中.Hibernate中,可以自动 ...
- hibernate实体类型映射文件
1.通过写hibernate映射文件.实体类型转换为数据库中的表 据实体类型而写的. 实体类型User.java package cn.wwh.www.hibernate.dd.property; i ...
- 使用MyBatis时接收值和返回值选择Map类型或者实体类型
MyBatis作为现近JavaEE企业级项目开发中常用的持久层框架之一,以其简洁高效的ORM映射和高度的SQL的自由性被广大开发人员认可.Mybatis在接收系统传来的参数和返回的参数时主要可以有Ma ...
- .net Core EF统一配置实体类型
一般情况需要对某个实体进行一些配置时代码如下: protected override void OnModelCreating(ModelBuilder modelBuilder) { base.On ...
随机推荐
- 转:Exception loading sessions from persistent storage
直用tomcat一段时间都正常无事,最近一次启动tomcat就发生以下异常: 严重: IOException while loading persisted sessions: java.io.EOF ...
- 非常easy学习的JQuery库 : (二) 选择器
作用 选择器同意您对元素组或单个元素进行操作. 在前面的章节中,我们介绍了一些有关怎样选取 HTML 元素的实例. 关键点是学习 jQuery 选择器是怎样准确地选取您希望应用效果的元素. jQuer ...
- Linux系统字符集乱码问题
假设你在安装Linux的过程中就选择了中文.可能能够省去步骤1.2.反之.假设你先安装了英文环境,而后希望它支持中文,则能够1.2步 1.首先在linux中安装中文包安装中文简体包rpm -ivh k ...
- 【ubantu】Ubuntu的一些常用快捷键
Ubuntu操作基本快捷键* 打开主菜单 = Alt + F1* 运行 = Alt + F2* 显示桌面 = Ctrl + Alt + d* 最小化当前窗口 = Alt + F9* 最大化当前窗口 = ...
- 配置Nginx与tomcat负责均衡集群,
今天主要说说,nginx如何配置tomcat集群,首先我们先介绍一下各个软件: 一: 1.Nginx介绍: 下载地址:http://nginx.org/en/download.html nginx这个 ...
- vue+mousemove实现拖动,鼠标移动过快拖动就失效
今天用vue+原生js的mousemove事件,写了个拖动,发现只能慢慢拖动才行,鼠标只要移动快了,就失效,不能拖动了: 搞了半天在,总算解决了,但是问题的深层原理还没搞清楚,知道的大侠可以留言分享, ...
- ios8 一些运行问题
iOS10相册相机闪退bughttp://www.jianshu.com/p/5085430b029fiOS 10 因苹果健康导致闪退 crashhttp://www.jianshu.com/p/5 ...
- a byte of vim -- 学习摘要
说在前面的话 -- a byte of vim 是我见过的最介绍vim 最好的书,想了解强大的vim的人,或者是已经在使用vim而打算进一步了解的人,我感觉都应该看看这个,内容精炼但涵盖非常广,--& ...
- Java 学习 day09
01-面向对象(内部类访问规则) package myFirstCode; /* 内部类的访问规则: 1. 内部类可以直接访问外部类的成员,包括私有private. 之所以可以直接访问外部类中的成员, ...
- amoeba安装与简单使用(一)
1.我的环境Amoeba 2.0.1 -- CentOS release 6.8 (Final) -- 10.20.49.254Mysql 5.1.73 -- CentOS release 6.4 ( ...