首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET MVC5高级编程——(3)MVC模式模型

而模型一般有:面向业务模型对象和面向视图模型对象。 2 什么是主键属性,什么是属性?...首先数据库中主外定义: 主键 定义: 唯一标识一条记录,不能有重复,不允许为空 表是另一表主键, 可以有重复, 可以是空值 作用: 用来保证数据完整性 用来和其他表建立联系用...个数: 主键只能有一个 一个表可以有多个 因为这个主外属性对于理解后面的EF框架(ORM)很有帮助,所以这里我们多讲一些!...而称ArtistID属性属性(foreign key),因为与模型对应数据库中,专辑表(Album)和艺术家(Artist)表存在对应关系,即ArtistID是Album表!...该派生类具有一个或多个DbSet类型属性,类型DbSet中每一个T代表一个想要持久保存对象。

4.6K40

EF Core索引

索引是跨多个数据存储区常见概念。 尽管它们在数据存储中实现可能会有所不同,但也可用于基于列(或一组列)更高效地进行查找。 不能使用数据批注创建索引。 ...modelBuilder.Entity() .HasIndex(p => new { p.FirstName, p.LastName }); }  备注 按照约定,将在用作每个属性...EF Core 每个不同属性集仅支持一个索引。 如果使用 "熟知 API" 来配置已定义索引属性索引(按照约定或以前配置),则会更改该索引定义。 ...如果要进一步配置由约定创建索引,则此操作非常有用。 索引唯一性 默认情况下,索引不唯一:允许多行具有与索引列集相同值。 ...modelBuilder) { modelBuilder.Entity() .HasIndex(b => b.Url) .IsUnique(); } 尝试为索引列集插入多个具有相同实体将导致引发异常

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

关于EF Code First模式不同建模方式对建表产生影响

今天在学EF Code First模式时候,发现几个很有趣问题,问题如下: 1、当编写玩实体后,不指定任何主键约束,EF会找长最像Id,然后设置其为主键,验证代码如下: //User类...结论:发现EF在我没有指定那个是主键情况下,将UserId设为了主键 2、当一个实体中有两个带Id字段,EF会将最像Id设为主键,优先级  Id>UserId>UserId_Id class User...EF将Id设为了主键,UserId和UserId_Id优先级自行验证. 3、关于问题,当在实体中加入导航属性,EF生成可能会当前实体中其他字段影响.验证代码如下: class PhotoInfo...EF生成了一个User_Id属性,关联User表 下面修改PhotoInfo实体,代码如下: class PhotoInfo { public Guid Id {...EF不再自动生成字段,而是将UserId属性设为了. 以上都是我测试出来关于EF默认行为,比较片面,欢迎指正.

93460

C# 数据操作系列 - 6 EF Core 配置映射关系

对于其他属性EF会自动按照同名形式映射到数据表中。 对于,如果在类里添加了引用类型,而这个引用类型也在EF上下文中,EF会把这种属性称为导航属性。...EF一旦在类里检索到了导航属性,就会去寻找对应EF会认为 属性名+Id或者类名+Id 可能是属性,如果找到名称一致且类型与导航属性目标类主键类型一致,则认为是。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求属性EF会自己添加一个属性。 对于一对一,EF要求导航属性双方都应该具有配置。 一对多,EF要求多一方设置。...同时如果在一方这边设置了集合类型导航属性,那么EF会自动到目标类里寻找属性。 说完了一对一和一对多,那么多对多呢? 如果没有声明的话, EF会生成一个中间表。 2....总结 在这一篇领着大家看了一下EF Core对于映射关系这一部分内容,我留下了相关FluentAPI介绍,我打算在下一篇介绍。因为这部分内容比较麻烦,而且使用率也相当高。

2.6K21

Entity Framework 约定

如果一个类中既没有id属性,也没有类名+id属性,那么代码在运行时将会报错,因为EF没有找到符合要求字段创建主键。...EF中定义关系要使用到导航属性,通过导航属性可以定义多个模型之间关系。大部分情况下我们会将导航属性属性结合在一起使用。...当EF检测出外属性后,会根据属性是否为空来判断关系,如果可以为空,那么模型之间关系将会配置成可选,Code First 不会再关系上配置级联删除。...OnModelCreating 方法中加入如下代码即可: modelBuilder.Properties().Where(p => p.Name == "Id").Configure(p => p.IsKey()); 注:当多个属性存在相同约定配置时...,最后一个约定将覆盖前面所有相同约定。

1.3K10

Entity Framework Core 2.1,添加种子数据

种子数据为什么要指定主键值?  因为在团队开发时,这样可以确保不同开发人员、电脑、服务器上,在同一个迁移版本具有相同种子数据。...添加关联种子数据 Province和City是一对多关系,也就是说一个Province可以有多个City,而且它们之间有导航属性。...我必须单独添加City种子数据,并且设置好。 所以正确做法是: ? 这次Add-Migration没有报错,迁移也成功了,看一下最后数据: ?...OK 如果无法在Model里设置主键/ 有时,我们在主从关系Model里不明确定义;有时候我们Model主键是private set; 这时我们就无法在HasData里设置主键/值了...我把City Model里去掉(导航属性仍然保留,和Province主从关系依然存在): ? 然后就可以这样添加种子数据: ? 迁移后数据: ? 结果仍然如预期一样。

1.6K10

生成迁移类

因为在团队开发时,这样可以确保不同开发人员、电脑、服务器上,在同一个迁移版本具有相同种子数据。...添加关联种子数据 Province和City是一对多关系,也就是说一个Province可以有多个City,而且它们之间有导航属性。...我必须单独添加City种子数据,并且设置好。...所以正确做法是: 这次Add-Migration没有报错,迁移也成功了,看一下最后数据: OK 如果无法在Model里设置主键/ 有时,我们在主从关系Model里不明确定义;有时候我们...我把City Model里去掉(导航属性仍然保留,和Province主从关系依然存在): 然后就可以这样添加种子数据: 迁移后数据: 结果仍然如预期一样。

1K10

EF Core 导航属性配置

所谓一对多就是其中多方上有一个属性或者列指向了另一个实体,而那个“一”那头则没有对应属性指向多方。 多对多是指两个类实例各有一个集合属性指向对方,换句话说就是A有0到多个B,B也有0到多个A。...意思就是无法定义一对一关系中子/从属方 如何解决呢?之前在说时候,EF会根据导航属性自动生成一个,但是这一条在一对一这里就有点不太起作用了。...,现在EF只在SingleModel表中生成了一个关系,在检索SingleTargetModel时候,EF会从SingleModel表中检索对应关系,并引入进来。...如果取消这行注释,EF会在SingleTargetModel表添加一个名为SingleId并指向SingleModel,而取消SingleModel里。...在EF 6中 中间表可以仅存在于关系中,但是在EF Core3 还没有这个支持。也就是当前文章使用版本。 5. 附加 在EF约束中,导航属性是默认可空

3K20

EntityFramework Core 学习扫盲

备用 Alternate Keys是EF CORE引入新功能,EF 6.X版本中并没有此功能。备用可以用作实体中除主键和索引唯一标识符,还可以用作目标。...在Fluent Api中,有两种方法可以指定备用,一种是当开发者将实体中属性作为另一个实体目标,另一种是手动指定。EF CORE默认约束是前者。...Post实体中BlogUrl属性作为Blog对应Post,指定Blog实体中Url属性作为备用(HasPrincipalKey方法将在下文唯一标识节中讲解),此时Url将被配置为唯一列,扮演...方法,它通常跟在HasForeignKey和WithMany方法后,用以指定实体中一个或多个属性作为备用。...唯一需要注意是,关系设置请从子端(如User和Blog呈一对多对应时,从Blog开始)开始,否则配置不慎容易出现多个情况。

9.5K90

Entity Framework 系统约定配置

EF中是以一种约定方式进行表、列同实体类进行映射,与此同时为了提高最大灵活性EF中可以通过Fluent API和Data Annotations两种方式对映射进行灵活配置。...3.使用导航属性约束两个表之间关系,在从表数据类中除了导航属性,推荐定义一个属性在从表数据类中(如果不指定将默认生成一个“+”列;此外在主表中推荐定义一个集合从表属性用户导航...,当然这个属性不定义也可以正常生成关系但是不利于使用),具体规则:“+”或者“+”又或者“”,其属性名不区分大小写并且如果出现多种匹配按照先后顺序匹配...;如果不存在外属性关系注册为可选,否则注册为必选项并且此时将设置级联删除关系;如果在从表类中有多个导航属性对应同一个数据类那么需要使用fluent API或者Data Annotations进行手动配置...Entity Framework 手动定义约定  EF默认约定不是一成不变,我们可以选择移除和修改它,例如EF默认生成数据表时将数据类名复数形式作为表名,下面的代码就可以移除这个规则: using

81620

数据库面试题汇总

MySQL基本索引类型 索引优缺点 事务 事务定义 事务性质 drop、delete与truncate 相同点 不同点 场景使用 超健、候选、主键、 超健 候选 主键 视图...数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小冗余度特点、是与应用程序彼此独立数据集合。...一个属性可以为作为一个超多个属性组合在一起也可以作为一个超。超包含候选和主键。 候选 最小超,即没有冗余元素。...主键 数据库表中对储存数据对象予以唯一和完整标识数据列或属性组合。一个数据列只能有一个主键,且主键取值不能缺失,即不能为空值(Null)。 在一个表中存在另一个表主键称此表。...视图 视图定义 视图是一种虚拟表,具有和物理表相同功能。可以对视图进行增,改,查,操作。视图通常是有一个表或者多个行或列子集。对视图修改不影响基本表。

1.9K21

tdengine入门详解

数据采集点 数据采集点是指按照预设时间周期或受事件触发采集物理量硬件或软件。一个数据采集点可以采集一个或多个采集量,但这些采集量都是同一时刻采集具有相同时间戳。...dnode 包含零到多个逻辑虚拟节点(vnode),零或者至多一个逻辑管理节点(mnode),零或者至多一个逻辑弹性计算节点(qnode),零或者至多一个逻辑流计算节点(snode)。...虚拟节点(vnode): 为更好支持数据分片、负载均衡,防止数据过热或倾斜,数据节点被虚拟化成多个虚拟节点(vnode,图中 V2,V3,V4 等)。...流计算节点(snode): 一个虚拟逻辑单元,只运行流计算任务(图中 S)。集群中可配置多个 snode,在整个集群内部共享使用(图中 S1,S2,S3)。...其原因在于,NOW 函数在执行中会被解析为所在 SQL 语句客户端执行时间,出现在同一语句中多个 NOW 标记也就会被替换为完全相同时间戳取值。

1.1K11

EF 约定介绍

,该集合属性里面的元素是另一个实体时,则默认未一对多关系,即使没有显示指定一对多关系,EF会默认设置主外(主从)关系 (3)、一对一实体关系,需要手动设置主从关系 (4)、多对多无载荷关系实体...如果主键属性类型为数字型或 GUID 则会被当成标识列(Identity Column) 4、关系(/导航属性)约定Relationship(Foreign Key/Navigation Properties...除了导航属性规定实体间关系,属性来式规定实体间方式一种手段.Code First能够推断以下命名属性(优先级从上到下): (1)、导航属性名+关联实体主键名 (2)、关联实体实体名+...关联实体主键名 (3)、关联实体主键名 注: (1)、当关系被检测到,Code First会根据可空性来推断关系具体形式;如果属性是可空,那么关系会被设置为可选,否则,关系就是必选.... (2)、当关联实体属性被设置为不为空,Code First会设置级联删除,反之不会。

1.6K100

Amazon DynamoDB 工作原理、API和数据类型介绍

与主键不同,People表是无架构,这表示属性及其数据类型都不需要预先定义。每个项目都能拥有其自己独特属性。 大多数属性是标量类型,这表示它们只能具有一个值。字符串和数字是标量常见示例。...某些项目具有嵌套属性 (Address)。DynamoDB 支持最高 32级深度嵌套属性。 这里,我们将看到第一个概念:主键。 主键 创建表时,除表名称,您还必须指定表主键。...DynamoDB 会计算分区哈希值,从而生成可从中找到该项目的分区。 如果我们查询项目具有相同分区键值,则可以通过单一操作 (Query) 读取表中多个项目。...二级索引 DynamoDB支持在一个表上创建一个或多个二级索引。利用 secondary index,除了可对主键进行查询,还可使用替代查询表中数据。...可以检索整个项目,也可以仅检索其属性子集。或者,也可以对排序键值应用条件,以便只检索具有相同分区数据子集。我们可以对表使用此操作,前提是该表同时具有分区和排序

5.5K30

01-EF Core笔记之创建模型

() .Property("LastUpdated"); 阴影属性 阴影属性指的是在实体中未定义属性,而在EF Core中模型中为该实体类型定义属性,这些类型只能通过变更跟踪器进行维护...,显然无论在Blog或Tag中定义都不合适,此时就需要一张关系表来进行关联,这张表就是BlogTag表。...),所以只需要实例化一次,并在多个模型中进行使用。...实体构造函数 EF Core支持实体具有有参构造函数,默认情况下,EF Core使用无参构造函数来实例化实体对象,如果发现实体类型具有有参构造函数,则优先使用有参构造函数。...使用有参构造函数需要注意: 参数名应与属性名字、类型相匹配 如果参数中不具有所有字段,则在调用构造函数完成后,对未包含字段进行赋值 使用懒加载时,构造函数需要能够被代理类访问到,因此需要构造函数为public

3K20

《大数据之路》读书笔记:维度设计

但代理是不具有业务含义,一般用于处理缓慢变化维;自然具有业务含义。比如商品,在ETL过程中会生成商品维表唯一标识代理,但没有业务含义。商品本身自然是商品ID。...维度设计高级主题 一、维度整合 维表整合内容: 命名规范统一 字段类型统一 公共代码及代码值统一 业务含义相同表统一 业务含义相同表统一,有以下几种集成方式: 采用主从表设计方式将两个表或多个表都有的字段放在主表...选择哪个方案,需要考虑以下上原则: 扩展性:当源系统、业务逻辑变化时,能通过较少成本快速扩展模型,保持核心模型相对稳定性。即高内聚、低耦合思想。...保持维度主键不变,将多值属性放在维度多个属性字段中。 维度主键发生变化,一个维度值存放多条记录。 五、杂项维度 将很多字段建立到一个维表中,在事实表中只需保存一个即可。...注意:多个字段不同取值组成一条记录,生成代理,存入维表中,并将该代理保存到相应事实表字段下。建议不要直接使用所有的组合生成完整杂项维表,在抽取遇到新组合时生成相应记录即可。

68610
领券