IDatabaseInitializer.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace TeamAAS_VP.Interfaces
  7. {
  8. /// <summary>
  9. /// 数据库初始化接口。
  10. /// 提供用于初始化数据库及检查数据库是否存在的抽象方法,适用于应用启动、迁移或初始化流程。
  11. /// 实现者应负责确保初始化过程的幂等性与线程安全,并在发生严重错误时抛出适当异常以便上层处理。
  12. /// </summary>
  13. public interface IDatabaseInitializer
  14. {
  15. /// <summary>
  16. /// 初始化数据库。
  17. /// 在应用程序启动或需要创建/升级数据库结构时调用。实现应执行必要的创建、架构迁移、索引或种子数据填充等操作。
  18. /// 实现应尽可能保证方法的幂等性(重复调用不会产生不一致状态),并对并发调用做好同步处理。
  19. /// </summary>
  20. void InitializeDatabase();
  21. /// <summary>
  22. /// 检查目标数据库是否存在并可访问。
  23. /// 用于在执行初始化或迁移前判断数据库是否已存在。实现应尽量以低开销方式进行检查,并在遇到非致命问题时返回 <c>false</c>。
  24. /// 在发生致命错误(例如配置严重错误或权限问题)时,可以抛出异常以便调用方处理。
  25. /// </summary>
  26. /// <returns>
  27. /// 如果目标数据库存在且可访问,则返回 <c>true</c>;否则返回 <c>false</c>。
  28. /// </returns>
  29. bool DatabaseExists();
  30. }
  31. }