sqlserver使用EF模型经验
sqlserver使用EF模型经验
EF模型使用本人在之前两三年中从没使用过,所以刚开始使用就会踩上许多的坑。今天我不单单说下自己所踩的一些坑与当前公司中使用EF模型设计的理念,即是为我自己做个笔记,也是为其他人提供一个经验吧,但本人刚接触不久,有理解错误的还请大家能够多多指教。
首先说一下我现在所在公司的设计理念是怎么样的
- 公司数据库的设计模式是怎么样的
EF模型设计图表
客户库 ->> 开发库: 客户相关表用视图关联
开发库-->>EF导入库:,
Note left of EF导入库: 对于需要操作的表设计一样的表,只需要查询的可以设计为视图
EF导入库-->> edmx文件: ,
Note left of edmx文件: 导入相关表结构生成实体模型
这将产生一个流程图。:
A[service] -- 执行 中间省略其他业务操作说明--> B((DA数据交互))
B --更新实体数据--> C{emdx实体类}
C --通过EF导入库生成的emdx实体--> D(生成sql语句)
D--更新数据-->E((开发库数据表))
E--更新-->F{客户库中的数据表}
A--连接执行数据库-->E
- 分析两个图表:
- 我们从第一张表中可以看出有三个数据库,一个是客户的数据库,一个为开发使用的数据库,还有一个是导入模型使用的库。第二张表则是程序执行操作数据库的流程和连接图。
- 先说第一个库是客户库,应该不用多说,就是客户主要数据的来源
- 再说第二个库是开发库,也不必多说就是我们开发人员所直接操作的库。
- 第三个库则必须得要细说一下,因为这里它的作用是很大的,但必须得要理解了才行。
- 我现在对它进行细说一下,但本人也是刚接触的有哪里说的不对,也请多多指教:
1.由于EF模型操作视图是不能增删改操作的,只能查询,而对于数据则可以进行增删改查,但也是针对于单表的视图,多表关联的视图也只能查询。
2.客户中的表我们在开发库添加了视图,其他程序业务操作则直接在开发库中创建表,从这里我们知道要操作客户的表在EF中我们无法执行,只能查询。这时为了都能够进行操作我们就添加了一个EF导入库,将需要修改客户的表在EF导入库中生成表,然后EF模型从该EF导入库中添加实体模型。但在web使用的数据库我们则使用开发库来连接,这样就解决了客户库的问题了。
EF模型导入遇上的问题
- 数据库表导入不入EF模型中那就查看一下表是否有主键值,没有主键值是添加不进去的。
- 数据库有许多连接服务时,可能有时候选错了数据库连接导致无法正常导入正确的模型,可这时模型中有许多原始表模型,我们不可能重新删除模型再创建,最简单的办法就是找到APP.config文件,里面找到连接字符串,将信息改为正确的连接,如果改了还是不行,那直接将那连接字符串的标签都删除,然后再去edmx更新从数据库到模型,这时它就会重新要你选择数据库进行连接了。
- 有时候我们直接选择从数据库更新到模型,是因为我们所更新的表是没有变的,但可能差个字段或是取消个字段,但更新之后它可能会显示找不到该字段的映射等问题,如果没有服务器需要对比则可以最直接的办法就是将该表的模型删除然后重新添加进来更新就好了。但如果有服务器的对比,删除再添加就会改变内容的位置,这时候比较就会显示有许多不一样。因此不需要删除可以直接点击edmx文件用xml格式打开,将有问题的字段映射部分去掉就行了。但要保证数据库与模型是一致的才可以。
sqlserver使用EF模型经验的更多相关文章
- (18)ASP.NET Core 基于现有数据库创建EF模型(反向工程)
1.简介 Entity Framework Core可通过数据库提供给应用程序的插件访问许多不同的数据库.我们可以通过使用Entity Framework Core构建执行基本数据访问的ASP.NET ...
- asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型)
一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent ...
- asp.net core系列 27 EF模型配置(索引,备用键,继承)
一.索引 索引是许多数据存储中的常见概念.虽然它们在数据存储中的实现可能会有所不同,但它们可用于更有效地基于列(或列集)进行查找.按照约定,用作外键每个属性 (或组的属性) 会自动创建索引.无法使用数 ...
- asp.net core系列 29 EF模型配置(查询类型,关系数据库建模)
一.查询类型 此功能是EF Core 2.1中的新功能. EF Core除了实体类型之外,EF Core模型还可以包含查询类型,这些查询类型是针对“未映射到实体类型”的数据获取.比如视图,或只读数据表 ...
- asp.net core系列 23 EF模型配置(概述, 类型和属性的包含与排除)
一.模型配置概述 EF使用一组约定基于实体类的定义来构建模型. 可指定其他配置以补充或替代约定的内容.本系列介绍的配置可应用于面向任何数据存储的模型,以及面向任意关系数据库时可应用的配置. 数据库提供 ...
- asp.net core系列 25 EF模型配置(隐藏属性)
一. 隐藏属性概述 隐藏属性也叫影子属性,该属性不是在.net实体类中定义的属性,而是在EFCore模型中为该实体类型定义的属性.这些属性的值和状态完全在变更跟踪器中维护.它有二个功能:(1)当数据库 ...
- asp.net core系列 24 EF模型配置(主键,生成值,最大长度,并发标记)
一.主键 键用作每个实体实例的主要唯一标识符. 使用关系数据库时,这会映射到主键的概念. 还可以配置不是主键的唯一标识符.按照约定,名为 Id 或 <type name>Id 的属性会配置 ...
- IBatis.Net项目数据库SqlServer迁移至Oracle经验
最近完成了一个(IBatis.Net+MVC)项目的数据库+代码迁移工作,可把我折腾得~~~ IBatis.Net是一个ORM框架,具体介绍可以问度娘.我之前没用ORM框架使用经验,所以这一路我不是走 ...
- asp.net core系列 26 EF模型配置(实体关系)
一.概述 EF实体关系定义了两个实体互相关联起来(主体实体和依赖实体的关系,对应数据库中主表和子表关系). 在关系型数据库中,这种表示是通过外键约束来体现.本篇主要讲一对多的关系.先了解下描述关系的术 ...
随机推荐
- vue-resource在vuecli3中请求headers修改
this.$resource.delete({ user_code: Cookie.get("empid"), date: date, file_name: file_name } ...
- python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型
线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...
- angular组件数据和事件
<h1>引入图片</h1> <img src="assets/images/02.png" alt="收藏" /> < ...
- Elasticsearch .net 记录-1
简介 ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例.像Solr4一样,是基于Lucene构建的.支持时间时间索引和全文检索.官网:http://www ...
- memcache安装与简单介绍
本文参考自菜鸟教程中的内容. 安装 安装memcache的时候,请切换为root用户 root@centos # wget http://www.memcached.org/files/memcach ...
- Qt编写控件属性设计器7-串口采集
一.前言 数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口.网络.数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示. ...
- Jsoup-基础练习
认识Jsoup 一个解析网页的工具 无论你用什么语言爬虫,都要解析网页,今天,我们用一款常用的网页解析Jsoup,来开启爬虫的第一课 认识网页,认识爬虫,认识你自己 *** 快速上手 了解一个新东西最 ...
- Docker镜像仓库Harbor搭建
园子里面已经有人写过了.也写得很好,我这里只记录下我遇到的问题 Harbor 依赖: 1:docker 2:docker-compose 怎么安装就不说了. 然后是安装Harbor github:ht ...
- 域名购买、SSL证书申请使用和本地服务映射外网
万网购买域名 1.在如下网址购买,价格不是很贵,几块钱一年的都有:https://wanwang.aliyun.com/domain/?spm=5176.100251.111252.24.4ddd4f ...
- QtCreator中打开.ui文件时卡死崩溃的解决方法
问题 QtCreator中打开一个项目,在编辑器中打开普通的.cpp或.h等文件正常,构建正常,运行正常,但是打开ui文件(QtCreator自动调用designer)时会卡死然后崩溃退出. 解决方法 ...