在 C# 中执行存储过程时 Table 值参数的空引用异常

Null Reference Exception for Table Value Parameter while executing the stored procedure in C#

我正在尝试使用 table 值参数执行存储过程。这些参数可以为空,因此我的代码抛出空引用异常。有没有一种方法可以传递可为空的 table 值参数。请指教

public IEnumerable<ReportFilter> GetReportFilter(ReportInputDefinition criteria, Guid tenantId)
    {
        IEnumerable<ReportFilter> ReportFilterData;
        IEnumerable<DomainTableType> domainTableTypes=null;
        if (criteria.Domains != null && criteria.Domains.Any())
        {
            domainTableTypes = criteria.Domains.Select(d => new DomainTableType(d));
        }
        using (var connector = GetConnector(ConnectionNames.DefaultConnection))
        {
            reportFilterData = connector.StoredProcedure("SpName")
                .TableValuedParameter("@TableValuedParameter1", domainTableTypes)
                .Parameter("@TenantID", tenantId)
                .As<ReportFilter>()
                .GetRows();
        }
        return reportFilterData;
    }

在上面的代码中,我得到了 domainTableTypes 的空引用异常,因为有时它可以有价值,有时却没有。这个问题不重复,因为我对 table 值参数有疑问。我知道如何处理常规参数。该解决方案对我不起作用:(

据我所知,不能将 NULL 传递给 table 类型。您必须传递一个空 table。如果这是特定于数据库系统的,我提前道歉,但也许您使用的是相同的 DBMS。

if (criteria.Domains != null && criteria.Domains.Any())
{
    domainTableTypes = criteria.Domains.Select(d => new DomainTableType(d));
}
else 
{
    domainTableTypes = Enumerable.Empty<DomainTableType>();
}