数据库视图 (View)和EntityFramework Code First结合使用
问题来源:
项目需要进行查询操作,会涉及多表间的联合查询,使用Entity Framework会牵涉到效率问题,为增加查询速度,所以使用数据库视图技术,综合来讲是将Model类映射到数据库View。
来自MSDN的一篇文章Mapping to an Indexed View :
1) You can certainly use Code First to map to a view, just tell Code First that it's a table and it will use the same SQL against the view that it would for a table. Obviously if your view isn't writeable then saving is going to fail if you try and update values in the entities that are based on the view, but we will just delegate to the database so if you don't update these entities then you won't have any issues.
2) You don't need to have a foreign key in the database, Code First will assume you have one, but in this case that won't cause any issues because there will always be a matching customer for each row anyway. You will need to give Code First a valid primary key for the view, which sounds like it would be customer_id and currency_code in your case.
但该文章并未指出该如何实现Model类到已存在View的映射。
1、首先生成POCO实体类;
2、数据库底层访问实现,主要是OnModelCreating方法的书写
3、实现访问
此过程大致类似于Entity Framework Code First执行SQL语句、视图及存储过程,实现过程中仍会存在问题,关键点如下:
Key Point:生成POCO对象后,数据库会显示需要进行数据库升级,需要先将数据库升级,然后将新生成的Table删掉,生成视图与删掉的Table名称相同,此时POCO对象对应的就是视图View,由于视图的生成更新是由数据库自动完成,所以不能进行全部CRUD操作。
数据库视图 (View)和EntityFramework Code First结合使用的更多相关文章
- 数据库视图View的使用
一.视图的概念: 概念: 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据 ...
- MySQL数据库视图(view),视图定义、创建视图、修改视图
原文链接:https://blog.csdn.net/moxigandashu/article/details/63254901
- How to: Map a Persistent Class to a Database View Which Has No Key Field如何:映射持久化类到无主键数据库视图
With XAF, you can build new applications from scratch or maintain existing databases. The How to: Ge ...
- C# EntityFramework Code First 迁移 降级 回退到空数据库
C# EntityFramework Code First 迁移 降级 回退到空数据库 1.包管理器控制台-迁移 在包管理器控制台中运行 Enable-Migrations Add-Migratio ...
- MySQL/MariaDB数据库的视图(VIEW)
MySQL/MariaDB数据库的视图(VIEW) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.视图概述 1>.什么是视图 视图就是一个虚拟的表,保存有实表的查询结果 ...
- SQL Server 索引(index) 和 视图(view) 的简单介绍和操作
--索引(index)和视图(view)-- --索引(index)----概述: 数据库中的索引类似于书籍的目录,他以指针形式包含了表中一列或几列组合的新顺序,实现表中数据库的逻辑排序.索引创建在数 ...
- Entityframework Code First 系列之数据注释
上一篇<Entityframework Code First 系列之项目搭建>讲了搭建一个Code First的控制台项目.里面有一些内容并没有扩展出来讲,因为篇幅有限.这篇针对上面内容中 ...
- Oracle 学习笔记 11 -- 视图 (VIEW)
本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...
- SQL Server数据库视图
1:什么是视图 2:视图和查询的区别 3:视图的优点 4:如何创建和管理视图 5:如何通过视图修改基本表的数据 6:如何通过视图实现数据的安全性 A:什么是视图: 视图(view):从一个或几个基本表 ...
随机推荐
- HTML5 常用的结构化标签整理
一.语义化结构化标签 结构化标签优点: 1.方便浏览器处理和识别,提升了网页的质量和语义. 2.减少了大量无意义的div标签,增强代码的可读性. 结构化标签:(header,nav,body,arti ...
- IdentityDbContext
Move the ApplicationUser definition to your DAL. Inherit your MyDbContext from IdentityDbContext< ...
- ElasticSearch已经配置好ik分词和mmseg分词(转)
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进行数据索引 ...
- 如何更好地利用Pmd、Findbugs和CheckStyle分析结果
这里列出了很多Java静态分析工具,每一种工具关注一个特定的能发挥自己特长的领域,我们可以列举一下: Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可能的bug— ...
- URAL1826. Minefield 题解
原题: http://acm.timus.ru/problem.aspx?space=1&num=1826 1826. MinefieldTime limit: 0.5 secondMemor ...
- jQuery 学习之路(3):DOM操作
一.在元素内部插入 .append(content[,content]) 在指定元素的内部末尾插入字符串,或在指定元素的内部末尾移入指定元素,如 $(".container").a ...
- 在OS X中使用Homebrew
Homebrew可以很方便的进行软件包管理,用官网的一句话来形容就是 Homebrew 使 OS X 更完整.用 gem 来安装您的 gems.用 brew 来搞定它们的依赖包. 安装Homebrew ...
- 基于iSCSI的SQL Server 2012群集测试(四)--模拟群集故障转移
6.模拟群集故障转移 6.1 模拟手动故障转移(1+1) 模拟手动故障转移的目的有以下几点: 测试群集是否能正常故障转移 测试修改端口是否能同步到备节点 测试禁用full-text和Browser服务 ...
- POJ 2411 Mondriaan's Dream
状压DP Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9938 Accepted: 575 ...
- 将json返回的日期格式转换
<script> function ChangeDateFormat(cellval) { var date = new Date(parseInt ...