sqlserver使用EF模型经验

EF模型使用本人在之前两三年中从没使用过,所以刚开始使用就会踩上许多的坑。今天我不单单说下自己所踩的一些坑与当前公司中使用EF模型设计的理念,即是为我自己做个笔记,也是为其他人提供一个经验吧,但本人刚接触不久,有理解错误的还请大家能够多多指教。

首先说一下我现在所在公司的设计理念是怎么样的

  1. 公司数据库的设计模式是怎么样的

EF模型设计图表

sequenceDiagram
客户库 ->> 开发库: 客户相关表用视图关联
开发库-->>EF导入库:,
Note left of EF导入库: 对于需要操作的表设计一样的表,只需要查询的可以设计为视图
EF导入库-->> edmx文件: ,
Note left of edmx文件: 导入相关表结构生成实体模型

这将产生一个流程图。:

graph TD
A[service] -- 执行 中间省略其他业务操作说明--> B((DA数据交互))
B --更新实体数据--> C{emdx实体类}
C --通过EF导入库生成的emdx实体--> D(生成sql语句)
D--更新数据-->E((开发库数据表))
E--更新-->F{客户库中的数据表}
A--连接执行数据库-->E
  1. 分析两个图表:
  • 我们从第一张表中可以看出有三个数据库,一个是客户的数据库,一个为开发使用的数据库,还有一个是导入模型使用的库。第二张表则是程序执行操作数据库的流程和连接图。
  • 先说第一个库是客户库,应该不用多说,就是客户主要数据的来源
  • 再说第二个库是开发库,也不必多说就是我们开发人员所直接操作的库。
  • 第三个库则必须得要细说一下,因为这里它的作用是很大的,但必须得要理解了才行。
  • 我现在对它进行细说一下,但本人也是刚接触的有哪里说的不对,也请多多指教:
    1.由于EF模型操作视图是不能增删改操作的,只能查询,而对于数据则可以进行增删改查,但也是针对于单表的视图,多表关联的视图也只能查询。
    2.客户中的表我们在开发库添加了视图,其他程序业务操作则直接在开发库中创建表,从这里我们知道要操作客户的表在EF中我们无法执行,只能查询。这时为了都能够进行操作我们就添加了一个EF导入库,将需要修改客户的表在EF导入库中生成表,然后EF模型从该EF导入库中添加实体模型。但在web使用的数据库我们则使用开发库来连接,这样就解决了客户库的问题了。

EF模型导入遇上的问题

  1. 数据库表导入不入EF模型中那就查看一下表是否有主键值,没有主键值是添加不进去的。
  2. 数据库有许多连接服务时,可能有时候选错了数据库连接导致无法正常导入正确的模型,可这时模型中有许多原始表模型,我们不可能重新删除模型再创建,最简单的办法就是找到APP.config文件,里面找到连接字符串,将信息改为正确的连接,如果改了还是不行,那直接将那连接字符串的标签都删除,然后再去edmx更新从数据库到模型,这时它就会重新要你选择数据库进行连接了。
  3. 有时候我们直接选择从数据库更新到模型,是因为我们所更新的表是没有变的,但可能差个字段或是取消个字段,但更新之后它可能会显示找不到该字段的映射等问题,如果没有服务器需要对比则可以最直接的办法就是将该表的模型删除然后重新添加进来更新就好了。但如果有服务器的对比,删除再添加就会改变内容的位置,这时候比较就会显示有许多不一样。因此不需要删除可以直接点击edmx文件用xml格式打开,将有问题的字段映射部分去掉就行了。但要保证数据库与模型是一致的才可以。

sqlserver使用EF模型经验的更多相关文章

  1. (18)ASP.NET Core 基于现有数据库创建EF模型(反向工程)

    1.简介 Entity Framework Core可通过数据库提供给应用程序的插件访问许多不同的数据库.我们可以通过使用Entity Framework Core构建执行基本数据访问的ASP.NET ...

  2. asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型)

    一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent ...

  3. asp.net core系列 27 EF模型配置(索引,备用键,继承)

    一.索引 索引是许多数据存储中的常见概念.虽然它们在数据存储中的实现可能会有所不同,但它们可用于更有效地基于列(或列集)进行查找.按照约定,用作外键每个属性 (或组的属性) 会自动创建索引.无法使用数 ...

  4. asp.net core系列 29 EF模型配置(查询类型,关系数据库建模)

    一.查询类型 此功能是EF Core 2.1中的新功能. EF Core除了实体类型之外,EF Core模型还可以包含查询类型,这些查询类型是针对“未映射到实体类型”的数据获取.比如视图,或只读数据表 ...

  5. asp.net core系列 23 EF模型配置(概述, 类型和属性的包含与排除)

    一.模型配置概述 EF使用一组约定基于实体类的定义来构建模型. 可指定其他配置以补充或替代约定的内容.本系列介绍的配置可应用于面向任何数据存储的模型,以及面向任意关系数据库时可应用的配置. 数据库提供 ...

  6. asp.net core系列 25 EF模型配置(隐藏属性)

    一. 隐藏属性概述 隐藏属性也叫影子属性,该属性不是在.net实体类中定义的属性,而是在EFCore模型中为该实体类型定义的属性.这些属性的值和状态完全在变更跟踪器中维护.它有二个功能:(1)当数据库 ...

  7. asp.net core系列 24 EF模型配置(主键,生成值,最大长度,并发标记)

    一.主键 键用作每个实体实例的主要唯一标识符. 使用关系数据库时,这会映射到主键的概念. 还可以配置不是主键的唯一标识符.按照约定,名为 Id 或 <type name>Id 的属性会配置 ...

  8. IBatis.Net项目数据库SqlServer迁移至Oracle经验

    最近完成了一个(IBatis.Net+MVC)项目的数据库+代码迁移工作,可把我折腾得~~~ IBatis.Net是一个ORM框架,具体介绍可以问度娘.我之前没用ORM框架使用经验,所以这一路我不是走 ...

  9. asp.net core系列 26 EF模型配置(实体关系)

    一.概述 EF实体关系定义了两个实体互相关联起来(主体实体和依赖实体的关系,对应数据库中主表和子表关系). 在关系型数据库中,这种表示是通过外键约束来体现.本篇主要讲一对多的关系.先了解下描述关系的术 ...

随机推荐

  1. 安卓P2P开源项目

    https://github.com/LinYaoTian/P2PChat 一个基于局域网的 Android P2P 聊天系统 https://github.com/ddssingsong/webrt ...

  2. 阶段5 3.微服务项目【学成在线】_day07 课程管理实战_01-我的课程-需求分析与PageHelper技术

    1 我的课程 1.1需求分析 课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询. 注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示. 上边的查 ...

  3. 小程序scroll-view 使用

    <scroll-view class="box" scroll-x="true" > <view </view> <view ...

  4. Django:django后台传递数据到js中

    #奇怪传递字典时前台接收不到???datalist= [{'site': '自强学堂', 'author': '涂伟忠'}]#只要列表能接收# datalist=[[93, 93, 0, 100.01 ...

  5. wordpress通过$wpdb获取一个分类下所有的文章

    在wordpress程序根目录下新建一个php文件,粘贴下面的代码 如下面的代码注释,修改$CID这个分类id,就可以获取这个分类下的文章了.这个查询需要联合三个表wp_posts.wp_term_r ...

  6. C/C++语言,自学资源,滚动更新中……

    以下教学视频中,缺少对“字符串”技术的讨论,大家注意看书. 一维数组,及其举例:(第四版)P77~P85,书上这部分内容写的很好,很详细,尤其是这里列出来的每一个例子都要仔细去看一看,对你会很有帮助. ...

  7. EOS 资源汇总

    EOS 资源汇总     A curated list of EOS Ecosystem by [SuperONE](https://superone.io/) EOS 主网 超级节点 https:/ ...

  8. 【数据库开发】windows下hiredis的编译(主要是包括一些异步编程的错误)

    果然,高端的程序员真心是鸟都不鸟windows的,Redis的客户端找了一圈愣是没有C++的windows版本 我要做个windows上的C++的服务器都没办法和redis交互 github上所有能试 ...

  9. Andrew Ng机器学习课程12

    Andrew Ng机器学习课程12 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言:主要讲述了batch learning和online learnin ...

  10. luogu1972:HH的项链

    题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...