Entity Framework Core 命名约定

注意:我使用的是 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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZOJ1654-Place the Robots【最大匹配,图论】

正题 大意 一个n*m个地方&#xff0c;有墙&#xff0c;草地和空地。在空地可以放机器人&#xff0c;机器人会将看到的其他机器人 [河蟹] 掉。他不能隔墙看。求最多能放多少个机器人。 解题思路 这里用一种奇特的构图方法&#xff0c; &#xff08;盗一下ppt里的图&#xff0…

彻底理解JVM常考题之分级引用模型

转载自 彻底理解JVM常考题之分级引用模型 本文通过探析Java中的引用模型&#xff0c;分析比较强引用、软引用、弱引用、虚引用的概念及使用场景&#xff0c;知其然且知其所以然&#xff0c;希望给大家在实际开发实践、学习开源项目提供参考。 Java的引用 对于Java中的垃圾…

越优秀的人越努力,越努力的人越幸运!

昨日晚间&#xff0c;学校值班&#xff0c;在楼道里面巡查几遍之后发现无异常情况&#xff0c;接着就去值班室中打开电脑忙自己的事。过了没一会儿&#xff0c;3班三学生去找我了&#xff0c;对我说&#xff0c;最近班里的学习情况不是太好&#xff0c;部分学生上课容易打盹&am…

SOA和微服务之间的区别

近几年&#xff0c;我们有很多文章对SOA和微服务之间的不同点和相似点进行了分析。有些人认为SOA有很多地方是值得微服务学习的&#xff0c;而有些人则认为区别对待微服务和SOA会更好。而Neal Ford认为&#xff0c;将单体迁移到面向服务的架构要比迁移到微服务来得容易。关于选…

考研生的努力程度是有多恐怖!

2021年全国研究生招生考试在12月26日开始&#xff0c;不过我没有参加。早就听闻考研生是多么多么的努力&#xff0c;今日一见&#xff0c;果然名不虚传&#xff0c;在这之前他们是有多努力我不知道&#xff0c;但是今天我所见到他们努力的程度&#xff0c;可以用恐怖来形容。偶…

全文索引 - Pomelo.EFCore.MySql

背景 全文索引&#xff1a;MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索&#xff0c;可以利用全文索引来提高匹配的速度。Pomelo.EntityFrameworkCore.MySql&#xff1a;一款第三方MySQL的Entity Framework Core驱动&#xff0c;在GitHub中开源&#xff0c…

“老师,为什么我一上课就感到困,听课听的总是走神?”

“老师,为什么我一上课就感到困,听课听的总是走神?” “老师,为什么我你讲的每个题我都能听明白,但是让我自己做我就一点思路都没有呢?” “老师,我记下来语法了,但是还是不会用怎么办?” “老师,我……” 怎么办?怎么办?急死了! 今天老师就给你解答一下你的为什么…

高并发场景下的限流策略

转载自 高并发场景下的限流策略 在高并发的场景下&#xff0c;我们的优化和保护系统的方式通常有&#xff1a;多级缓存、资源隔离、熔断降级、限流等等。 今天我们来聊聊限流。 为什么需要限流 举个比较简单的例子&#xff0c;正常来说&#xff0c;一个员工A他每天能够处理…

Entity Framework Core 批处理语句

在Entity Framework Core (EF Core)有许多新的功能&#xff0c;最令人期待的功能之一就是批处理语句。那么批处理语句是什么呢&#xff1f;批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请求&#xff0c;它将在数据库的单次请求中批量执行多个语句。在这篇文章中&…

mybatis和spring整合时这个报错,应该这样解决!

01问题描述今天在写mybatis和spring整合的时候&#xff0c;出现了个问题&#xff0c;其实也没有多难&#xff0c;就是自己没有仔细看&#xff0c;特此记录一下。报错问题如下&#xff1a;org.springframework.beans.factory.BeanCreationException: Error creating bean with n…

一个简单的例子,学习自定义注解和AOP

转载自 一个简单的例子&#xff0c;学习自定义注解和AOP 记得今年年初刚开始面试的时候&#xff0c;被问的最多的就是你知道Spring的两大核心嘛&#xff1f;那你说说什么是AOP&#xff0c;什么是IOC&#xff1f;我相信你可能也被问了很多次了。 1、到底是什么是AOP&#xff…

Xamarin for iOS 11(一) - 初尝ARKit

编者语&#xff1a;Xamarin 的兼容性是它最大的优点&#xff0c;对于iOS / Android 新的功能支持也是无缝的&#xff0c;做到100%兼容。Xamarin.ios for iOS 11.0的支持已经开始&#xff0c;大家可以在这里下载最新的Preview支持 (https://releases.xamarin.com/preview-xcode-…

挺不喜欢下雪的

你要储蓄你的可爱&#xff0c;眷顾你的善良&#xff0c;变得勇敢。当这个世界越来越坏时&#xff0c;只希望你能越来越好。——《南山南》昨天夜间&#xff0c;窗外雪花飘飘&#xff0c;朋友圈中到处都是晒下雪的照片&#xff0c;有的说是“这是2020年的第一场雪”&#xff0c;…

是什么使你留在你的公司

一个故事 之前离职的一个同事&#xff0c;是典型的技术型人才&#xff0c;前段时间跟他一起吃饭&#xff0c;得知他工作状况不是很理想&#xff08;他在创业型团队&#xff0c;工作强度非常大&#xff0c;且做出来的东西得不到应有的认可&#xff0c;公司给他的报酬也不是很高…

有些事,父母一定不能依着孩子!

今天的文章&#xff0c;可能有的人不太喜欢。在我教学这么些年以来&#xff0c;这个问题在今年出现的最多——父母总是站在孩子的角度&#xff0c;不管什么事都是依着孩子&#xff1b;如果此事对孩子好也就罢辽&#xff0c;但是明明对孩子没有一点好处&#xff0c;还要和孩子一…

“看起来你每天都要做好多事,你有时间吗?”

“我看你每天要干的事好多啊,你有那么多时间吗?” “有啊,早起会儿,晚睡会儿,时间就出来了” 我每天确实是要做好多事。 01 我是一个喜欢规律生活的人,通常会将自己的一天划分为好多块,每一块时间安排的事都不一样,不太喜欢别人打乱我的生活规律,也不知道这是好事还是…