EmbeddedTenantSqlScripts.cs 1 KB
using System.Reflection;

namespace FoodLabeling.Application.MultiTenancy;

/// <summary>
/// 从程序集嵌入资源读取租户初始化 SQL 脚本。
/// </summary>
public static class EmbeddedTenantSqlScripts
{
    /// <summary>
    /// 读取指定嵌入资源中的 SQL 文本。
    /// </summary>
    /// <param name="assembly">包含 EmbeddedResource 的程序集</param>
    /// <param name="resourceName">LogicalName 或完整资源名</param>
    public static string Read(Assembly assembly, string resourceName)
    {
        var stream = assembly.GetManifestResourceStream(resourceName);
        if (stream == null)
        {
            var available = string.Join(", ", assembly.GetManifestResourceNames());
            throw new InvalidOperationException(
                $"未找到嵌入 SQL 资源「{resourceName}」。可用资源:{available}");
        }

        using (stream)
        using (var reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }
}