原文地址: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 学习笔记 —— 创建模型的更多相关文章

  1. EntityFramework Core 学习笔记 —— 添加主键约束

    原文地址:https://docs.efproject.net/en/latest/modeling/keys.html Keys (primary) Key 是每个实体例的主要唯一标识.EF Cor ...

  2. EntityFramework Core 学习笔记 —— 包含与排除属性

    原文地址:https://docs.efproject.net/en/latest/modeling/included-properties.html 在模型中包含一个属性意味着 EF 拥有了这个属性 ...

  3. EntityFramework Core 学习笔记 —— 包含与排除类型

    原文地址:https://docs.efproject.net/en/latest/modeling/included-types.html 在模型类中包含一种类型意味着 EF 拥有了这种类型的元数据 ...

  4. .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]

    原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...

  5. .NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]

    为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的 ...

  6. .NET CORE学习笔记系列(2)——依赖注入【3】依赖注入模式

    原文:https://www.cnblogs.com/artech/p/net-core-di-03.html IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架中以实现对流 ...

  7. JUC学习笔记——共享模型之管程

    JUC学习笔记--共享模型之管程 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的管程部分 我们会分为以下几部分进行介绍: 共享问题 共享问题解决方案 线程安全分析 Monitor ...

  8. .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]

    原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...

  9. .NET CORE学习笔记系列(2)——依赖注入[6]: .NET Core DI框架[编程体验]

    原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动 ...

随机推荐

  1. javascript平时小例子①(移动的小div)

    css样式: #box{ width: 300px; height: 300px; background: deepskyblue; position: absolute; margin-right: ...

  2. BizTalk动手实验(十)业务活动监控(BAM)演示

    1 课程简介 通过本课程熟悉业务活动监控(BAM)的使用及各组件的配置. (本环境为Windows 2008 32位操作系统环境 + Visual Studio 2010 + BizTalk 210) ...

  3. readyState0 1 2 3 4..

    0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头). 3:请求在处理中:通常响 ...

  4. Android课程---关于ListView列表视图的学习

    activity_ui3.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...

  5. JavaScript 入门教程二 在HTML中使用 JavaScript

    一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...

  6. C#的TreeView标记

    今天用到了TreeView控件,多次添加后发现内容是重复的,于是用到清除:this.myTreeView.Nodes.Clear(): 如果想在添加完节点后,默认全展开:this.myTreeView ...

  7. 线性探测再散列 建立HASH表

    根据数据元素的关键字和哈希函数建立哈希表并初始化哈希表,用开放定址法处理冲突,按屏幕输出的功能表选择所需的功能实现用哈希表对数据元素的插入,显示,查找,删除. 初始化哈希表时把elem[MAXSIZE ...

  8. Pivot C# WPF 代码添加PivotItem

    PivotItem new_PivotItem = new PivotItem();//新建Pivotitem ListView new_ListView = new ListView();//新建l ...

  9. Unit06 - 抽象类、接口和内部类(下) 、 面向对象汇总

    Unit06 - 抽象类.接口和内部类(下) . 面向对象汇总 1.多态:  1)意义:    1.1)同一类型的引用指向不同的对象时,有不同的实现        行为的多态:cut().run(). ...

  10. 表单验证插件----jquery validation

    1.下载地址:http://jqueryvalidation.org/ 2.使用方法: <script type="text/javascript" src="ht ...