作者:webabcd
介绍
再接再厉VS 2008 sp1 + .NET 3.5 sp1系列文章索引:ADO.NET Entity Framework(实体框架), ADO.NET Data Services(数据服务), Dynamic Data(动态数据)
1、再接再厉VS 2008 sp1 + .NET 3.5 sp1(1) – Entity Framework(实体框架)之添加、查询、更新和删除的Demo
介绍
以Northwind为示例数据库,ADO.NET Entity Framework之完全面向对象的添加操作、查询操作、更新操作和删除操作
- ADO.NET Entity Framework(EF) – 就当是微软的ORM吧,可以将概念模型映射到逻辑模型,从而使用概念模型做开发
- Entity – 在EF中就是实体的概念
- Entity Data Model(EDM) – 实体数据模型,表现为一组映射到数据源的实体和关系
- LINQ to Entities – 和LINQ to XXX一样,对EF中的实体做LINQ
- Entity SQL(ESQL) – 一种类似sql的查询语言,针对概念模型做查询
- csdl – Conceptual schema definition language 概念架构定义语言
- ssdl – Store schema definition language 存储架构定义语言
- msl – Mapping specification language 映射规范语言
- csdl, ssdl, msl均为基于XML的语言。.edmx文件同时包含这3种语言所描述的信息
- Entity – 实体
- Entity Class – 实体类。至少要有一个实体键(Key Properties)
- Entity Set – 实体集。实体集中包含着若干实体
- Association – 关联。实体类之间的关系。导航属性就是由关联来定义的
- Association Set – 关联集。关联集中包含着若干关联
- Entity Container – 实体容器。实体容器中包含着若干实体集和关联集
- 概念模型中必须要有实体键,实体键与表中的主键相对应,所以表中必须要有主键
- 存储模型的字段如果有主键键或非空约束,则概念模型中必需要有相应的属性与之映射
- 概念模型中存在的属性,必须在存储模型中有与之映射的字段
- 作为映射条件的字段不能映射到属性上
- 要实现继承的话,就要使用映射条件来进行筛选
- EntityConnection – 与存储模型的连接。相当于SqlConnection
- EntityCommand – 对 EDM 执行的命令。相当于SqlCommand
- EntityDataReader – 以只读、只进的数据流的方式获取数据(内存中始终只有一行)。相当于SqlDataReader
2、再接再厉VS 2008 sp1 + .NET 3.5 sp1(2) – Entity Framework(实体框架)之详解 Linq To Entities 之一
介绍
以Northwind为示例数据库,ADO.NET Entity Framework之Linq To Entities
- First – 返回集合中的第一个成员;不延迟
- FirstOrDefault – 返回集合中的第一个成员(找不到则返回null);不延迟
- All – 是否集合中所有成员都满足某一条件;不延迟
- Any – 集合中是否有成员满足某一条件;不延迟
- Average – 取平均值;不延迟
- Sum – 求和;不延迟
- Max – 取最大值;不延迟
- Min – 取最小值;不延迟
- Count – 取指定集合的成员数,返回值类型int;不延迟
- LongCount – 取指定集合的成员数,返回值类型long;不延迟
- Take – 获取集合的前 n 个成员;延迟
- Skip – 跳过集合的前 n 个成员;延迟(Linq To Entities 需要先排序才能 Skip)
- Distinct – 过滤集合中的相同项;延迟
- Union – 连接不同集合,自动过滤相同项;延迟
- UnionAll – 连接不同集合,不会自动过滤相同项;延迟
- Concat – 连接不同集合,不会自动过滤相同项;延迟
- Intersect – 获取不同集合的相同项(交集);延迟
- Except – 从某集合中删除其与另一个集合中相同的项;延迟
3、再接再厉VS 2008 sp1 + .NET 3.5 sp1(3) – Entity Framework(实体框架)之详解 Linq To Entities 之二
介绍
以Northwind为示例数据库,ADO.NET Entity Framework之Linq To Entities
- Select – 选择需要返回的字段
- Where – 筛选
- OrderBy – 正序排序
- OrderByDescending – 倒序排序
- ThenBy – 在 orderBy 或 orderByDescending 的基础上再正序排序
- ThenByDescending – 在 orderBy 或 orderByDescending 的基础上再倒序排序
- GroupBy – 分组
- Join – 连接
- GroupJoin – 连接后分组
4、再接再厉VS 2008 sp1 + .NET 3.5 sp1(4) – Entity Framework(实体框架)之EntityClient, ObjectQuery
介绍
以Northwind为示例数据库,ADO.NET Entity Framework之详解EntityClient, ObjectQuery
- EntityConnection – 与存储模型的连接
- EntityCommand – 对 EDM 执行的命令
- EntityParameter – 配置 EntityCommand 的参数
- EntityDataReader – 以只读、只进的数据流的方式获取数据(内存中始终只有一行)。相当于SqlDataReader
- ObjectQuery<T> – 通过 Entity SQL 或 查询语法 或 Linq 方法对概念模型做查询
- ObjectContext.CreateQuery<T>(Entity SQL) – 根据 esql 创建一个 ObjectQuery<T> 。(延迟)
5、再接再厉VS 2008 sp1 + .NET 3.5 sp1(5) – Entity Framework(实体框架)之ObjectContext
介绍
以Northwind为示例数据库,ADO.NET Entity Framework之详解ObjectContext, 以及事务和并发
- ObjectContext – 以对象(这些对象是 EDM 中定义的实体类型的实例)的形式与数据进行交互
- CreateObjectName – 实体类 的 CreateObjectName 静态方法用于创建实体类的新实例
- AddToEntitySetName() – 将需要添加的对象添加到对象上下文中
- SaveChanges() – 将所有更新保存到相关存储区中
- Attach()/AttachTo() – 附加外部实体到上下文中
- ObjectContext.Refresh() – 更新上下文数据
- ObjectStateEntry – 维护实体状态的类
- ObjectStateManager – 实体状态管理器
6、再接再厉VS 2008 sp1 + .NET 3.5 sp1(6) – Entity Framework(实体框架)之Entity SQL
介绍
以Northwind为示例数据库,ADO.NET Entity Framework之详解Entity SQL
- Linq 方法上也可以使用 esql
- 查询表达式
- select, from, where, order by, group by, having
- cross join, inner join, left outer join, right outer join, full outer join
- case when then else end
- 集合运算符
- anyelement(expression) – 从集合中提取任意元素
- except – 从左侧表达式的结果中删除其与右侧表达式结果中的相同项,并返回此结果
- flatten(collection) – 将多个集合组成的集合转换为一个集合
- intersect – 返回运算符两侧查询结果的相同项
- [not] exists(expression) – 确定查询结果是否存在
- [not] in {,} – 确定某值是否在某集合中
- overlaps – 确定运算符两侧查询结果是否具有相同项
- set(expression) – 移除重复项
- union – 将运算符两侧查询结果连接成一个集合(移除重复项)
- union all – 将运算符两侧查询结果连接成一个集合(包括重复项)
- top(n) – 取前 n 条记录
- 分页运算符
- skip n – 需要跳过的项数,结合 order by 使用
- limit n – 需要选择的项数,结合 order by 使用
- 类型运算符
- cast(expression as data_type) – 将表达式转换为另一种数据类型(使用 EntityCommand 执行查询,返回 EDM 类型;使用 ObjectQuery 执行查询,返回 CLR 类型)
- oftype – 从查询表达式返回指定类型的对象集合,需 EDM 中继承关系的支持
- is of – 确定表达式的类型是否为指定类型或指定类型的某个子类型,需 EDM 中继承关系的支持
- treat – 将指定基类型的对象视为指定派生类型的对象,需 EDM 中继承关系的支持
- 常用运算符
- 算术运算符
- +
- -(减或负)
- *
- /
- %
- 比效运算符
- >, >=, <, <=, <>, !=
- is null, is not null
- between and, not between and
- like, not like
- 通配符(应用于 like 和 not like)
- % – 零个或零个以上的任意字符
- _ – 任意单个字符
- [] – 在指定范围 [a-f] 或集合 [abcdef] 中的任意单个字符
- [^] – 不在指定范围 [^a-f] 或集合 [^abcdef] 中的任意单个字符
- 逻辑运算符
- and, &&
- or, ||
- not, !
- 其他字符
- — – 注释
- . – 成员访问
- ; – 分行
- + – 串联字符串
- 算术运算符
- 函数
- 函数 – 聚合函数
- Avg(expression) – 非 null 的平均值
- Count(expression) – 记录总数(Int64)
- BigCount(expression) – 记录总数(Int32)
- Max(expression) – 非 null 的最大值
- Min(expression) – 非 null 的最小值
- Sum(expression) – 非 null 的总和值
- StDev(expression) – 非 null 的标准偏差值(相对于平均值的标准偏差)
- 函数 – 数学函数
- Abs(value) – 取绝对值
- Ceiling(value) – 取不小于参数的最小整数
- Floor(value) – 取不大于参数的最大整数
- Round(value) – 取参数的整数部分
- 函数 – 字符串函数
- Left(string, length) – 从左侧开始,取 string 的前 length 个字符
- Right( tring, length) – 从右侧开始,取 string 的前 length 个字符
- LTrim(string) – 去掉 string 的左侧的空白
- RTrim(string) – 去掉 string 的右侧的空白
- Trim(string) – 去掉 string 的两侧的空白
- ToLower(string) – 将 string 全部转换为小写
- ToUpper(string) – 将 string 全部转换为大写
- Concat(string1, string2) – 串联 string1 和 string2
- Replace(string1, string2, string3) – 将 string1 中的所有 string2 都替换为 string3
- Reverse(string) – 取 string 的反序
- Substring(string, start, length) – 从 string 的 start 位置开始取 length 个字符,索引从 1 开始
- IndexOf(string1, string2) – string1 在 string2 中的位置,索引从 1 开始,若找不到则返回 0
- 函数 – 日期和时间函数
- Year(expression) – 取时间的年的部分
- Month(expression) – 取时间的月的部分
- Day(expression) – 取时间的日的部分
- Hour(expression) – 取时间的时的部分
- Minute(expression) – 取时间的分的部分
- Second(expression) – 取时间的秒的部分
- Millisecond(expression) – 取时间的毫秒的部分(0 – 999)
- CurrentDateTime() – 取服务器的当前时间
- CurrentUtcDateTime() – 取服务器的 UTC 当前时间
- CurrentDateTimeOffset() – 返回值类型为 DateTimeOffset , 取当前时间及相对于 UTC 时间的差值
- 函数 – 按 位 运算的函数
- BitWiseAnd(value1, value2) – 取 value1 和 value2 的位与结果
- BitWiSEOr(value1, value2) – 取 value1 和 value2 的位或结果
- BitWiseXor(value1, value2) – 取 value1 和 value2 的位异或结果
- BitWiseNot(value) – 取 value 的位求反结果
- 函数 – 其它函数
- NewGuid() – 返回新生成的 GUID
- 函数 – 聚合函数
- 不常用运算符
- row, multiset, createref, deref, key, ref, navigate
7、再接再厉VS 2008 sp1 + .NET 3.5 sp1(7) – Data Services(数据服务)
介绍
以Northwind为示例数据库,演示ADO.NET Data Services(数据服务)
- DataService
– ADO.NET 数据服务的主入口点。 T 为数据源类名 - IDataServiceConfiguration.SetEntitySetAccessRule(string name, EntitySetRights rights) – 为指定实体集设置访问规则
- QueryInterceptorAttribute – 声明在方法上的查询拦截器
- DataServiceContext – 数据服务的上下文
- DataServiceQuery – 以指定的 URI 语法查询数据服务
8、再接再厉VS 2008 sp1 + .NET 3.5 sp1(8) – Dynamic Data(动态数据)
介绍
以Northwind为示例数据库,演示Dynamic Data(动态数据)
- MetaModel – 数据库和域对象之间的映射的抽象
- MetaModel.RegisterContext() – 使用指定的配置上下文注册指定的数据上下文
- Scaffold – 译为基架。即基于数据库架构(linq to sql 或 entity framework)生成网页模板的机制
- ScaffoldTableAttribute(false) – 隐藏指定的表
- ScaffoldColumn(false) – 隐藏指定的字段
- MetadataTypeAttribute(Type metadataClassType) – 指定要与数据模型类关联的元数据类
- DynamicField – 显示指定的动态数据字段,相当于 BoundField
- DynamicControl – 通过指定的字段模板显示指定的动态数据字段
OK
[源码下载]