Ef Core花里胡哨系列(6) XML注释同步到数据库注释
1.Ef Core花里胡哨系列(2) 移除外键、扩展操作2.Ef Core花里胡哨系列(1) SafeDelete、ReadOnly、Audit 安全删除、只读、审计等3.Ef Core花里胡哨系列(3) 动态修改实体对应的表(分表)、多租户4.Ef Core花里胡哨系列(4) 多租户5.Ef Core花里胡哨系列(5) 动态修改追踪的实体、动态查询
6.Ef Core花里胡哨系列(6) XML注释同步到数据库注释
7.Ef Core花里胡哨系列(7) 使用Ef Core也能维护表架构?8.Ef Core花里胡哨系列(8) 如何可控管理Ef Core的迁移?9.Ef Core花里胡哨系列(9) 阴影属性,有用还是没用?10.Ef Core花里胡哨系列(10) 动态起来的 DbContext11.Ef Core花里胡哨系列(11) ef8 无实体查询,你好!Ef Core花里胡哨系列(6) XML注释同步到数据库注释
参考文档:C#读取注释的方法
准备读取Xml的工具类
可以根据[参考文档]获取一个简单读取注释的方法。
实现DbContext
我们通过重写OnModelCreating
方法,在生成数据库表时,使用FluentApi
指定对应表以及其属性的Comment
即可将Xml注释转为数据库的Comment
。
public class SampleDbContext : DbContext
{
public SampleDbContext(DbContextOptions<SampleDbContext> options) : base(options) { }
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var xmlCommentHelper = new XmlCommentHelper();
xmlCommentHelper.LoadAll();
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
var typeComment = xmlCommentHelper.GetTypeComment(entityType.ClrType);
modelBuilder.Entity(entityType.ClrType).ToTable(t => t.HasComment(typeComment));
foreach (var property in entityType.ClrType.GetProperties().Where(x => x.IsPubliclyWritable()))
{
var propertyComment = xmlCommentHelper.GetFieldOrPropertyComment(property);
modelBuilder.Entity(entityType.ClrType).Property(property.Name).HasComment(propertyComment);
}
}
base.OnModelCreating(modelBuilder);
}
}
/// <summary>
/// 用户表
/// </summary>
public class User
{
/// <summary>
/// Id
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
public required string Name { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public required string Email { get; set; }
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?