日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Entity Framework Core 命名约定

發(fā)布時(shí)間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Entity Framework Core 命名约定 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版發(fā)布時(shí),功能可能存在變動(dòng)。Entity Framework 遷移允許從模型生成數(shù)據(jù)庫(kù),這意味著必須從類名和屬性名生成數(shù)據(jù)庫(kù)對(duì)象的名稱。對(duì)于大多數(shù)人來說使用默認(rèn)名稱是沒有問題的,但是,您的DBA可能會(huì)要求您使用特定的命名約定。例如,一些DBA希望表名大寫,或者列名使用表名為前綴。Entity Framework 允許逐個(gè)設(shè)置表名或列名:

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

但是,寫這些代碼非常無聊并且容易出錯(cuò),不應(yīng)該逐個(gè)設(shè)置對(duì)像的名稱,您可以通過修改模型實(shí)現(xiàn)全局設(shè)置。事實(shí)上modelBuilder是可讀寫的,您可以迭代所有對(duì)象并更改其名稱。

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 中運(yùn)行以下命令:

Add-Migration NamingConvention Update-Database

上面的命令將生成以下數(shù)據(jù)庫(kù)架構(gòu):

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);

您可以看到生成數(shù)據(jù)庫(kù)對(duì)象名稱遵循的命名約定。

相關(guān)文章:?

  • Entity Framework Core 生成跟蹤列

  • 在Apworks數(shù)據(jù)服務(wù)中使用基于Entity Framework Core的倉(cāng)儲(chǔ)(Repository)實(shí)現(xiàn)

  • Entity Framework Core的貼心:優(yōu)雅處理帶默認(rèn)值的數(shù)據(jù)庫(kù)字段

  • Entity Framework Core 實(shí)現(xiàn)MySQL 的TimeStamp/RowVersion 并發(fā)控制

  • Entity Framework Core 軟刪除與查詢過濾器

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


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的Entity Framework Core 命名约定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。