系统.InvalidOperationException:从具体化的'System.Int32'类型为可

本文关键字:Int32 类型 System InvalidOperationException 具体化 系统 | 更新日期: 2023-09-27 18:02:20

我有一个特定的单元测试,在我的个人PC上运行良好,但每当我得到TFS运行测试时,它都会失败,并出现以下异常-

系统。InvalidOperationException:从物化的系统。Int32'类型为可空的'Country'类型有效。

通过遵循堆栈跟踪,它有一个问题,与以下方法-

public IEnumerable<IAddress> AddressSelectAll(long userID)
{
    using (var context = new Entities())
    {
        var addresses = context.Customers
                               .Where(x => x.UserId == userID)
                               .Select(y => new Address
                                                {
                                                    Address1 = y.Address1,
                                                    Address2 = y.Address2,
                                                    Address3 = y.Address3,
                                                    AddressID = y.AddressId,
                                                    City = y.City,
                                                    Country = y.Country != null ? (Country)y.Country : (Country?)null,
                                                    Postcode = y.Postcode,
                                                    State = y.State,
                                                    RecordEntryDate = y.RecordEntryDate,
                                                    Type = (AddressType)EFFunctions.ConvertToInt32(y.AddressType),
                                                    UserID = y.UserId
                                                }).ToList();
        return addresses.ToList();
    }
}

如果它是相关的(怀疑它是),我的efffunctions类定义为-

public static class EFFunctions
{
    [EdmFunction("Model", "ConvertToInt32")]
    public static int ConvertToInt32(string text)
    {
        var result = string.IsNullOrEmpty(text) ? 0 : Convert.ToInt32(text);
        return result;
    }
}

我的。edmx中有以下内容-

<Function Name="ConvertToInt32" ReturnType="Edm.Int32">
  <Parameter Name="v" Type="Edm.String" />
  <DefiningExpression>
    CAST(v AS Edm.Int32)
  </DefiningExpression>
</Function>
有谁能告诉我我做错了什么吗?

系统.InvalidOperationException:从具体化的'System.Int32'类型为可

你的问题可能是行(或部分行)

Country = y.Country != null ? (Country)y.Country : (Country?)null

在一种情况下将值转换为Country,而Country?在另一个。也许您可以将该值替换为-1,或者更可靠的是,更改Customer。国家类型到国家?

相关文章: