一、什么是视图

视图在rdbms(关系型数据库管理系统)中扮演了一个重要的角色,它是将多个表的数据联结成一种看起来像是一张表的结构,但是没有提供持久化。因此,可以将视图看成是一个原生表数据顶层的一个抽象。例如,我们可以使用视图提供不同安全的级别,也可以简化必须编写的查询,尤其是我们可以在代码中的多个地方频繁地访问使用视图定义的数据。ef code first模式现在还不完全支持视图,因此我们必须使用一种变通的方法。这种方法是:将视图真正看成是一张表,让ef定义这张表,然后在删除它,最后再创建一个代替它的视图。

二、使用ef的code first模式管理视图

以图书和图书类型为例讲解如何使用ef的code first模式管理视图。

1、创建实体类

booktype实体类定义如下:

 book实体类定义如下:

 2、创建模拟视图类

从多个实体中取出想要的列组合成一个实体,bookview模拟视图类定义如下:

3、为模拟视图类创建配置伙伴类

下面的代码指定了表名和主键。

注意:表名也是视图的名字,这里的表名一定要和创建视图的语句中的视图名一致。

 4、创建种子数据初始化器类

上面的代码中,我们先使用database对象的executesqlcommand()方法销毁生成的表,然后又调用该方法创建我们需要的视图。该方法在允许开发者对后端执行任意的sql代码时很有用。 

5、创建数据上下文类

把实体类添加到数据上下文中,并配置实体之间的关系

 6、运行程序

main()方法定义如下:

 运行程序,就会看到数据库中已经生成了books和booktypes两张表和bookviews视图,见下图:

运行结果如下图:

直接在数据库中查询视图:

注意:访问视图和任意数据表在代码层面没有任何区别,需要注意的地方就是在seed()方法中定义的视图名称要和定义的表名一致,否则就会因为找不到表对象而报错。

示例代码下载地址:点此下载

到此这篇关于entity framework使用code first模式管理视图的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。