作者: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
[源码下载]