EntityFramework Core 学习笔记 —— 创建模型
原文地址:https://docs.efproject.net/en/latest/modeling/index.html
前言:
EntityFramework 使用一系列的约定来从我们的实体类细节创建模型。我们可以钦定一些额外的映射配置来添加、重写实体类的哪些细节应该被这些约定所发现。
这篇文章讲述了一些无论模型被存储在哪种关系型数据库中都可以生效的配置项。DataBase Provider 也同样可以针对某一种数据存储启用指定的配置项。更多相关文档请查看:Database Providers
This article covers configuration that can be applied to a model targeting any data store and that which can be applied when targeting any relational database. Providers may also enable configuration that is specific to a particular data store. For documentation on provider specific configuration see the the Database Providers section.
这段我感觉翻译的有问题,所以提供原文给大家参考
在这一章节中,你可以找到关于下面列出的约定以及配置项的信息:
下面的东西都是链接到不同小节的,我慢慢来翻译
- 包含与排除类型
- 包含与排除属性
- 设置 Key (主键)
- Generated Properties
- Required/optional properties
- Maximum Length
- Concurrency Tokens
- Shadow Properties
- Relationships
- Indexes
- Alternate Keys
- Inheritance
- Backing Fields
- Relational Database Modeling
- Table Mapping
- Column Mapping
- Data Types
- Primary Keys
- Default Schema
- Computed Columns
- Sequences
- Default Values
- Indexes
- Foreign Key Constraints
- Alternate Keys (Unique Constraints)
- Inheritance (Relational Database)
提示!
你可以在 GitHub 上面找到这篇文章的示例代码
配置的方法
Flunt API
我们可以在我们自己实现的上下文中通过使用 ModelBuilder 提供的 API 重写 OnModelCreating 方法来配置我们的模型类。这是最具有超级牛力的配置方法,并且,通过这种方式,我们无需修改我们的模型类。Flunt API 具有最高优先级并且会重写约定以及 data annotions。
class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.Property(b => b.Url)
.IsRequired();
}
}
Data Annotations
我们同样可以通过在我们的实体类或者其属性上面附加一些特性(attributes,比如 Data Annotations)。Data Annotations 会重写约定,但是会被 Fluent API 重写定义。
public class Blog
{
public int BlogId { get; set; }
[Required]
public string Url { get; set; }
}
我的笔记
在Entity Framework教程(第二版)这篇博客中,hystar 大神提到了使用继承 EntityTypeConfiguration<EntityType> 的方式来添加映射,然而这种方法现在在 .Net Core 中无法使用了。
EntityFramework Core 学习笔记 —— 创建模型的更多相关文章
- EntityFramework Core 学习笔记 —— 添加主键约束
原文地址:https://docs.efproject.net/en/latest/modeling/keys.html Keys (primary) Key 是每个实体例的主要唯一标识.EF Cor ...
- EntityFramework Core 学习笔记 —— 包含与排除属性
原文地址:https://docs.efproject.net/en/latest/modeling/included-properties.html 在模型中包含一个属性意味着 EF 拥有了这个属性 ...
- EntityFramework Core 学习笔记 —— 包含与排除类型
原文地址:https://docs.efproject.net/en/latest/modeling/included-types.html 在模型类中包含一种类型意味着 EF 拥有了这种类型的元数据 ...
- .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]
原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...
- .NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]
为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的 ...
- .NET CORE学习笔记系列(2)——依赖注入【3】依赖注入模式
原文:https://www.cnblogs.com/artech/p/net-core-di-03.html IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架中以实现对流 ...
- JUC学习笔记——共享模型之管程
JUC学习笔记--共享模型之管程 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的管程部分 我们会分为以下几部分进行介绍: 共享问题 共享问题解决方案 线程安全分析 Monitor ...
- .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]
原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...
- .NET CORE学习笔记系列(2)——依赖注入[6]: .NET Core DI框架[编程体验]
原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动 ...
随机推荐
- jquery ui bootstrap日期插件
http://blog.csdn.net/php_897721669/article/details/7404527 搜索“jquery ui日期插件怎么显示年份”? $("#datepic ...
- Windows7无法访问(远程登录)Windows 2003共享问题解决
解决方法: 1.直接按下win+r键,输入gpedit.msc,打开本地组策略编辑器. 2.找到“计算机配置”-->“Windows设置”-->“安全设置”-->“本地策略”--&g ...
- php课程---练习连接数据库及增删改
方式一:用php中的内置函数来做 (适用于5.1之前的版本) //1.生成连接 $conn = mysql_connect("localhost","root" ...
- mysql root 维护
修改root密码: mysql -uroot -paaamysql> use mysql;mysql> UPDATE user SET password=password("aa ...
- C# Lock 解读[转]
一.Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行, ...
- jQuery 怎么判断DIV出现在可视区域
直接上代码: $(window).scroll(function () { var oT = document.getElementById("myDiv").offsetTop; ...
- java中遍历集合的三种方式
第一种遍历集合的方式:将集合变为数组 package com.lw.List; import java.util.ArrayList; import java.util.List; import ja ...
- Airline Hub
参考:http://blog.csdn.net/mobius_strip/article/details/12731459 #include <stdio.h> #include < ...
- Fiddler- -Composer创建和发送HTTP Request
Fiddler的功能还有很多, 很多功能都没有被挖掘出来.这次我们介绍Fiddler中的一个非常有用的功能Composer,是用来创建和发送HTTP Request的.Composer的使用方法很简单 ...
- [BS-31]导航控制器的interactivePopGestureRecognizer属性
导航控制器的interactivePopGestureRecognizer属性 如何自定义导航控制器push出来的视图控制器的左侧返回按钮? 首先需要知道的是:如果要自定义push出来的VC的左侧返回 ...