1:给实体中的每个需要注释的字段加上[Description()]特性,如下图。
/// <summary>
/// 通行统计
/// </summary>
[Table("CS_RecordTotal")]
public class RecordTotalEntity : Entity<int>
{
[NotMapped]
public string CS_RecordTotal { get; set; }
/// <summary>
/// 主键
/// </summary>
[Column("id"), Key]
[Description("主键")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override int Id { get; set; }
/// <summary>
/// 今日通行数
/// </summary>
[Description("今日通行数")]
public int TodayNum { get; set; }
/// <summary>
/// 累计通行数
/// </summary>
[Description("累计通行数")]
public int TotalNum { get; set; }
}
2:重写Seed方法(在数据库迁移脚本的配置中配置中)。
/// <summary>
/// 本地数据库迁移配置
/// </summary>
public class DataGateDbConfiguration : DbMigrationsConfiguration<MysqlCSContext>
{
public DataGateDbConfiguration()
{
//缺点需要为任何未决的模型更改提供迁移脚本(Add-Migration)否则数据库表结构和代码可能不一致
//优点:数据库变更有迹可循,可指定版本升级降级,每次表数据的初始化更新可以写在相应的迁移脚本中
//AutomaticMigrationsEnabled = false;
//优点:dbContext中的实体及属性的改动运行时会在数据库中直接生效
//缺点:数据库版本不可控,数据库结构变动比较随意
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
//数据库上下文路径
ContextKey = "项目名称";
//迁移脚本路径
MigrationsDirectory = @"Migrations\DataContextMigrations";
}
protected override void Seed(MysqlCSContext context)
{
new InitialHostDbBuilder(context).Create();
List<PropertyInfo[]> listperoperties = new List<PropertyInfo[]>()
{
typeof(AlarmDetailEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance),
typeof(BlackListEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance),
typeof(PassRecordEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance),
typeof(PersonFeatureEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance),
typeof(PersonInfoEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance),
typeof(WhiteListEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance),
typeof(RecordTotalEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance),
};
GetDescription(listperoperties, context);
}
void GetDescription(List<PropertyInfo[]> listperoperties, MysqlCSContext context)
{
for (int j = 0; j < listperoperties.Count; j++)
{
for (int i = 1; i < listperoperties[j].Length; i++)
{
object[] objs = listperoperties[j][i].GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objs.Length > 0)
{
context.Database.ExecuteSqlCommand("ALTER TABLE " + listperoperties[j][0].Name + " MODIFY COLUMN " + listperoperties[j][i].Name + " VARCHAR(30) NOT NULL COMMENT " + "'" + ((DescriptionAttribute)objs[0]).Description + "'");
}
}
}
}
}
3.配置完成,运行即可。最后就可以看数据库中注释自动添加了。