一.拆分实体到多个表 1.在日常开发中,会经常碰到一些老系统,当客户提出一些新的需求,这些需求需要在原来的表的基础上加一些字段,大多数人会选择通过给原表添加字段的方式来完成这些需求,方法,虽然可行,但是如果架构不合理的系统,就会牵一发而动全身.所以处理这种需求比较合理的方式是:建一张新表来存放新的字段. 通过叫做合并两张及以上的表到一个单独的实体,也叫分拆一个实体到多个表,我们把每个组成部分当成一个逻辑实体.这个过程叫做逻辑分拆. 缺点:每当获取实体时,框架都需要额外的Join联结. 2.示例…
EF基础知识小记三(设计器=>数据库)介绍了如何创建一个空设计器模型,并如何将模型同步到数据库的表中,本文则主要介绍如何将一个存在的数据库同步到模型设计器中.为了能快速的模拟这个过程,给出一下建表语句,代码如下: --建表脚本 create table Student ( Id int not null, Name ) not null, Age int not null ) create table Teacher ( Id int not null, Name ) not null, Age…
本文主要讲EF一对多关系和多对多关系的建立 一.模型设计器 1.一对多关系 右键设计器新增关联 导航属性和外键属性可修改 2.多对多关系 右键设计器新增关联 模型设计完毕之后,根据右键设计器根据模型生成数据库,就能生成对应的表之间的一对多和多对多关联 二.代码层面 建表语句如下: --建表脚本 create table Student ( Id int not null, Name ) not null, Age int not null ) create table Teacher ( Id…
1.EF的常用使用场景 (1).维护一个已经存在的数据库,VS提供了工具帮助我们把数据库中的表和视图等对象导入到实体框架.        [数据库=>模型(Database First)] (2).通过VS提供的实体设计器设计表模型,然后从头开始添加实体类型.类型间的关联以及继承体系到设计器中.模型创建好后,然后根据模型生成数据库.     [模型=>数据库(Model First)] (3).EF还提供了以代码为中心的模型设计方式,通过这种方式我们可以在不使用设计器的情况下,手工创建一系列的…
1.EF等ORM解决方案出现的原因 因为软件开发中分析和解决问题的方法已经接近成熟,然后关系型数据库却没有,很多年来,数据依然是保存在表行列这样的模式里,所以,在面相对象和高度标准化的数据库中产生了一个失配(不匹配.阻抗失配,微软的安德斯.海尔斯伯格<C#之父>可能会这样叫它),为了解决这个失配,大多数项目中都会引入"数据处理层"来转换应用程序实体层的数据到数据库的行和列中,随着"数据处理层"的不断进化,最后ORM就诞生了. 2.集成查询语言LINQ L…
日常开发中,经常会碰到一些自引用的实体,比如系统菜单.目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类的模型. 以下是自引用表的数据库关系图: ok,下面开始介绍从零创建一个Code First版的自引用模型. 1.往目标项目中添加EF包,通过NuGet程序包添加 导入相关的程序集. 2.创建自引用实体类 public class Category { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Ide…
本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1.通过EF设计器创建一个简单模型 (1).右键目标项目添加新建项 (2).选择ADO.Net实体数据模型,并将实体模型命名为Recipe1,点击下一步 (3).选择空设计器,并点击完成 (4).edmx空模型创建完毕,下一步右键设计界面创建实体 (5).添加一个Person实体,实体属性如下图,并点击确定 图中创建键属性,实体会自动添加一个Id属性,并将该属性设为主键(数据库设计三范式之一…
1.EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询的类型进行更好的解耦,使用EF,我们查询的对象不再是C#类,而是更高层的抽象:Entity Data Model,这提供了额外的灵活性,但在性能和简单性上面也会有所损失. EF的优点:在数据库架构和实体类之间的映射提供了更好的灵活性,还通过程序支持除了SqlServer之外的数据库. Linq To Sql之于EF Linq To Sql和EF师出同门,EF支持LINQ to SQL几乎同样的查…
目录 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介linux用户,用户权限,组的概念. 1.1 基本概念 1.2 组 1.3 ls命令查看权限. 二丶用户权限修改命令 1.chmod 命令的使用 三丶超级用户,以及组操作. 1.什么是超级用户 2.组管理 四丶添加linux用户,以及删除linux用户 1.命令 2.用户命令 3.让添加的用户具有sudo权限 4.which 查看命令所执行位置的路径 5.用户切换 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介lin…
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万QPS高并发等等. 但实际上,对于普通的开发者(包括IM开发人员)来说,多数公司.多数团队也都是干着默默无闻.平淡无奇的产品开发,并没有那么多高并发.高大上的事情可以做. 就拿一个IM系统来说,无论你的架构设计考虑了多少分布式.高吞吐.高可用,所有这些事情只要落地,那编码的第一件事情就是要实现几乎所…