あまみや ゆうこ » PAGE7

Entity Framework 7 - (五)Eager Load

在以往的Entity Framework版本中,我们使用的模式是Lazy Load,延迟加载的特性,也有的称为惰性加载,可以最大程度避免数据库的开销,并做到按需获取,提升了性能。系统在模型初始化的时候会创建数据库操作对象,但是这个时候并不会马上进行数据库连接,而是会在第一次实际查询的时候才会进行连接。对于有些查询,还可以采用延迟加载,在执行查询操作的时候并不会立刻进行查询,而是等到需要使用查询返回数据的时候才进行查询。该特性对于查询大量数据的时候非常有用。

然而Lazy Load并不能在所有的场景中提升数据库的开销,比如在下面的关系中,我们欲按照时间降序输出研究内容、作者姓名、时间,而Lazy Load将会多次访问数据库,获取作者的姓名,而Eager Load解决了这类问题。在你执行查询前,先行使用.Include()把后续需要的外部记录一同载入。

这两种加载方式各有千秋,但是Entity Framework 7中强制我们使用Eager Load方式。

undefined

首先我们建模:

Person.cs

namespace EntityFrameworkSample.Models
{
    public class Person

更多内容 »

Published on 1/10/2016 12:56:10 PM

Entity Framework 7 - (四)外键(多对多)

关系数据库中两个表之间的一种关系, 该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。

我们尝试设定工人与企业的关系,一个工人可以找一个全职工作和多个兼职工作,于是产生如下多对多关系:

undefined

首先我们进行建模:

Worker.cs:

using System.Collections.Generic;

namespace EntityFrameworkSample.Models
{
    public class Worker

更多内容 »

Published on 1/10/2016 12:19:42 PM

Entity Framework 7 - (三)外键(一对多)

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

外键用于保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。

在前两篇文章的基础上,我们设定这样的一种关系,一个学生可以有多种爱好。

这就产生了一对多关系:

undefined

我们需要注意的是,建模中,在一对多关系中,多的一方需要有一的一方的外键,也就是说Hobby中需要有Student的id。

首先,我们先定义Hobby模型:

using System.ComponentModel.DataAnnotations.Schema;

更多内容 »

Published on 1/10/2016 11:52:44 AM

Entity Framework 7 - (二)索引

索引是对数据库表中一个或多个列的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。

在上一篇文章中我们根据班级和分数进行了检索,为了提高数据库的效率,我们应当为这两个字段添加索引。

如果没有索引,只有遍历整个表,直到查询到最后一条数据后进行统计计算,这样效率非常低,而如果添加了索引,系统将直接在索引中搜索,效率大大提升。

首先,班级为字符串类型,欲将字符串作为索引,我们必须先限制其长度。

进入Student.cs,添加System.ComponentModel.DataAnnotations命名空间的引用。

在Class字段上方添加MaxLength特性:

[MaxLength(8)]
public string Class { get; set; }

更多内容 »

Published on 1/10/2016 11:42:41 AM

在跨平台的环境中(vNext CoreCLR)读写Excel

CodeComb.Data.Excel不依赖任何本机组件,部分Excel读写包都需要本机安装Office,或如OleDb需要安装AccessDatabaseEngine,而使用本包不需要任何依赖,因此它可以运行在CoreCLR云端优化环境下,同样也可以在Windows、Linux、OSX下读写操作Excel文件。

注意:本包仅能处理Excel2007(后缀为.xlsx)的文件

源代码将在该包成熟后公开,地址为:https://github.com/CodeComb/CodeComb.Data.Excel

首先创建vNext应用程序,在这里我选择了控制台程序是为了方便演示,项目取名为TestExcel

img

打开project.json,在dependencies节中添加CodeComb.Data.Excel的引用

``` "dependencies": { "CodeComb.Data.Excel": "2.0.0-rc1-final" }

更多内容 »

Published on 1/10/2016 10:37:48 AM