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实体关系定义了两个实体互相关联起来(主体实体和依赖实体的关系,对应数据库中主表和子表关系). 在关系型数据库中,这种表示是通过外键约束来体现.本篇主要讲一对多的关系.先了解下描述关系的术 ...
随机推荐
- build
15:16:53: Running steps for project QQ_Client... 15:16:53: Starting: "/opt/Qt5.12.0/5.12.0/gcc_ ...
- MySQL复制线程状态转变
一.主库线程状态(State)值 以下列表显示了主从复制中主服务器的Binlog Dump线程的State列中可能看到的最常见状态(SHOW PROCESSLIST).如果Binlog Dump线程在 ...
- java中把文件拷贝到指定目录下最简单几种方法
java中把文件拷贝到指定目录下最简单几种方法 String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...
- Linux MySql状态、启动、停止、重启命令
1.查看mysql状态 [1]ps -ef|grep mysqld 看看是否有mysqld_safe 和mysqld进程 [root@localhost ~]# ps -ef|grep mysqld ...
- 性能测试-Linux资源监控⽅式
Linux资源监控⽅式 1. 命令 2. 第三⽅⼯具(nmon) 3. LR(需要安装RPC相应服务包和开启服务)(略) ⼀.命令 ⽅式 1. top (系统资源管理器) 2. vmstat (查 ...
- web框架之MVC/MTV
MVC框架 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式 Model(模型)表示应用程序核心(比如数据库记录列表) Vi ...
- 如何让在panel里的子窗体随panel的大小改变而变化?(转)
private void Form1_Load(object sender, EventArgs e) { frm=new Form2(); ...
- LeetCode_28. Implement strStr()
28. Implement strStr() Easy Implement strStr(). Return the index of the first occurrence of needle i ...
- (十)java虚拟机性能监控工具
一. jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息.语法格式如下: 命令行参数选项说明如下: 1.1 案例 ...
- 求数值的n次方根
二分法 float SqrtByBisection(float n) //用二分法 { if(n<0) //小于0的按照你需要的处理 return n; float mid,last; floa ...