Ef Core花里胡哨系列(6) XML注釋同步到數(shù)據(jù)庫注釋
Ef Core花里胡哨系列(6) XML注釋同步到數(shù)據(jù)庫注釋
參考文檔:C#讀取注釋的方法
準(zhǔn)備讀取Xml的工具類
可以根據(jù)[參考文檔]獲取一個簡單讀取注釋的方法。
實(shí)現(xiàn)DbContext
我們通過重寫OnModelCreating方法,在生成數(shù)據(jù)庫表時,使用FluentApi指定對應(yīng)表以及其屬性的Comment即可將Xml注釋轉(zhuǎn)為數(shù)據(jù)庫的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; }
}

浙公網(wǎng)安備 33010602011771號