注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布时,功能可能存在变动。Entity Framework 迁移允许从模型生成数据库,这意味着必须从类名和属性名生成数据库对象的名称。对于大多数人来说使用默认名称是没有问题的,但是,您的DBA可能会要求您使用特定的命名约定。例如,一些DBA希望表名大写,或者列名使用表名为前缀。Entity Framework 允许逐个设置表名或列名:

protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Blog>().ForSqlServerToTable("Blog");
}

但是,写这些代码非常无聊并且容易出错,不应该逐个设置对像的名称,您可以通过修改模型实现全局设置。事实上modelBuilder是可读写的,您可以迭代所有对象并更改其名称。

public class BloggingContext : DbContext{       public DbSet<Blog> Blogs { get; set; }        public DbSet<Post> Posts { get; set; } 

     protected override void OnModelCreating(ModelBuilder modelBuilder)    {             base.OnModelCreating(modelBuilder);        // Singularize table name// Blogs => Blogforeach (var entityType in modelBuilder.Model.GetEntityTypes()){            // Add NuGet package "Humanizer" to use Singularize()entityType.Relational().TableName = entityType.Relational().TableName.Singularize();}        // Prefix column names with table name// Id => Blog_Idforeach (var entityType in modelBuilder.Model.GetEntityTypes()){                    foreach (var property in entityType.GetProperties()){property.Relational().ColumnName = entityType.Relational().TableName + "_" + property.Relational().ColumnName;}}        // Rename Foreign Key// FK_Post_Blog_BlogId => FK_Post_Blog_BlogId_Testforeach (var entityType in modelBuilder.Model.GetEntityTypes()){                      foreach (var property in entityType.GetProperties()){                            foreach (var fk in entityType.FindForeignKeys(property)){fk.Relational().Name = fk.Relational().Name + "_Test";}}}        // Rename Indices// IX_Blog_Url => IX_Blog_Url_Testforeach (var entityType in modelBuilder.Model.GetEntityTypes()){                       foreach (var index in entityType.GetIndexes()){index.Relational().Name = index.Relational().Name + "_Test";}}}
}

在 Package Manager Console 中运行以下命令:

Add-Migration NamingConvention
Update-Database

上面的命令将生成以下数据库架构:

CREATE TABLE [dbo].[Blog] ([Blog_BlogId] INT            IDENTITY (1, 1) NOT NULL,[Blog_Url]    NVARCHAR (450) NULL,    CONSTRAINT [PK_Blog] PRIMARY KEY CLUSTERED ([Blog_BlogId] ASC)
);    CREATE UNIQUE NONCLUSTERED INDEX [IX_Blog_Url_Test]    ON [dbo].[Blog]([Blog_Url] ASC) WHERE ([Blog_Url] IS NOT NULL);CREATE TABLE [dbo].[Post] ([Post_PostId]  INT            IDENTITY (1, 1) NOT NULL,[Post_BlogId]  INT            NOT NULL,[Post_Content] NVARCHAR (MAX) NULL,[Post_Title]   NVARCHAR (MAX) NULL,    CONSTRAINT [PK_Post] PRIMARY KEY CLUSTERED ([Post_PostId] ASC),    CONSTRAINT [testFK_Post_Blog_BlogId] FOREIGN KEY ([Post_BlogId]) REFERENCES [dbo].[Blog] ([Blog_BlogId]) ON DELETE CASCADE);CREATE NONCLUSTERED INDEX [IX_Post_BlogId_Test]    ON [dbo].[Post]([Post_BlogId] ASC);

您可以看到生成数据库对象名称遵循的命名约定。

相关文章:

  • Entity Framework Core 生成跟踪列

  • 在Apworks数据服务中使用基于Entity Framework Core的仓储(Repository)实现

  • Entity Framework Core的贴心:优雅处理带默认值的数据库字段

  • Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

  • Entity Framework Core 软删除与查询过滤器

原文地址:http://www.cnblogs.com/tdfblog/p/entity-framework-core-naming-convention.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

Entity Framework Core 命名约定相关推荐

  1. Entity Framework Core 2.0 全局查询过滤器

    本博文翻译自: http://gunnarpeipman.com/2017/08/ef-core-global-query-filters/ Entity Framework Core 2.0 全局查 ...

  2. Entity Framework Core 执行SQL语句和存储过程

    无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...

  3. Entity Framework Core 批处理语句

    在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句.那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请 ...

  4. Entity Framework Core 2.0的新特性

    虽然EF Core 2.0存在大量槽点,但是它也给出了不少亮点.在本文中,我们将介绍这次发布版的部分亮点. \\ 数据库表切分(Table Splitting) \\ ORM常被吐槽是总是对所请求数据 ...

  5. ABP官方文档翻译 9.2 Entity Framework Core

    Entity Framework Core 介绍 DbContext 配置 在Startup类中 在模块PreInitialize方法中 仓储 默认仓储 自定义仓储 应用程序特定基础仓储类 自定义仓储 ...

  6. Entity Framework Core 2.0 使用入门

    本文转载自作者:晓晨Master(李志强) 原文章地址 https://www.cnblogs.com/stulzq/p/7717873.html 一.前言 Entity Framework(后面简称 ...

  7. Entity Framework Core介绍(1)

    介绍 Entity Framework (EF) Core 是轻量化.可扩展和跨平台版的常用 Entity Framework 数据访问技术. EF Core 可用作对象关系映射程序 (O/RM),以 ...

  8. oracle精简版_使用Entity Framework Core访问数据库(Oracle篇)

    前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架  终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...

  9. 在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句

    在开发中,我们想在调试中查看EF Core执行的sql语句,可以使用SQL Studio Manager Tools工具,另一种方式是使用EF Core提供的日志.在ASP.NET Core使用Ent ...

最新文章

  1. 商汤科技汤晓鸥:其实不存在AI行业,唯一存在的是“AI+“行业
  2. php pdo 怎么循环,php – 在循环内绑定PDO语句的参数
  3. [MATLAB学习笔记] global声明全部变量
  4. AtCoder AGC017C Snuke and Spells
  5. iOS之CALayer的CAEmitterLayer实现“红包雨”效果
  6. 基于android的lbs技术,基于Android的LBS应用研究
  7. 简练软考知识点整理-控制成本过程
  8. C# WebBrower1控件提示“该文档已被修改,是否保存修改结果”解决方法 .
  9. ASP.NET MVC 利用AreaRegistration进行Area区域模块化开发
  10. autojs命令代码大全_各个主流品牌手机的命令代码大全,安卓工程模式的指令大全!...
  11. jq 获取引入页面url_jQuery获取当前页面的URL信息
  12. php网站访问卡顿,网站反应慢,经常卡顿是什么原因?怎么解决?
  13. Servlet学习记录2
  14. 【工具】百度云破解版不用会员高速下载 分享
  15. current,present,recent 都是现在的,都是形容词
  16. 报错:org.springframework.cloud.gateway.support.NotFoundException: Unable to find instance for localhos
  17. 为什么 MongoDB 索引选择B-树,而 Mysql 选择B+树(精干总结)
  18. python---打包exe文件运行自动化
  19. windows10 打开所有文件夹弹出cmd.exe
  20. C++ BMI指数(身体质量指数) 计算程序

热门文章

  1. AVL树----java
  2. c#中BackGroundWorker控件
  3. 祝贺 在线文件管理系统 访问量 超过500
  4. XElement 和 XDocument 到底有什么区别?
  5. N 年沉淀,腾讯这套系统终于开源!
  6. 手把手教你学Dapr - 6. 发布订阅
  7. Magicodes.IE 2.5.6.2发布
  8. 利用 PGO 提升 .NET 程序性能
  9. 使用 Blazor 开发内部后台(三):登录
  10. C# 读写Ini文件