Entity Framework Core 命名约定
2017-07-28 07:35
316 查看
注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布时,功能可能存在变动。Entity Framework 迁移允许从模型生成数据库,这意味着必须从类名和属性名生成数据库对象的名称。对于大多数人来说使用默认名称是没有问题的,但是,您的DBA可能会要求您使用特定的命名约定。例如,一些DBA希望表名大写,或者列名使用表名为前缀。Entity Framework 允许逐个设置表名或列名:
但是,写这些代码非常无聊并且容易出错,不应该逐个设置对像的名称,您可以通过修改模型实现全局设置。事实上
在 Package Manager Console 中运行以下命令:
上面的命令将生成以下数据库架构:
您可以看到生成数据库对象名称遵循的命名约定。
相关文章:
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跨平台或扫描二维码关注
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 => Blog foreach (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_Id foreach (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_Test foreach (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_Test foreach (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跨平台或扫描二维码关注
相关文章推荐
- 【EF】Entity Framework Core 命名约定
- 在Apworks数据服务中使用基于Entity Framework Core的仓储(Repository)实现
- 扩展entity framework core 实现默认字符串长度,decimal精度,entity自动注册和配置
- 全球首发免费的MySql for Entity Framework Core
- Entity Framework Core 执行SQL语句和存储过程
- Entity Framework Core 2.0 新特性
- ASP.NET Core 开发 - Entity Framework (EF) Core
- EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下?
- ASP.NET Core 操作数据库提示“Microsoft.EntityFrameworkCore.DbUpdateException”
- Asp .net core api+Entity Framework core 实现数据CRUD数据库中(附Git地址)
- Entity Framework Core 数据库Migrations命令Update更新数据库中模型
- EntityFrameworkCore DBFirst
- .net core Entity Framework Core Code First 框架 分层开发
- 使用Entity Framework Core需要注意的一个全表查询问题
- Programming Entity Framework CodeFirst--数据库约定和配置
- Entity Framework Core 数据迁移
- Entity Framework Code First约定
- Entity Framework Core 2.0 新特性
- Entity Framework Core 2.0 全局查询过滤器
- 【EF】Entity Framework Core 2.0 特性介绍和使用指南