来自物化系统.Int32'的指定演员表。输入' System.Int64'类型无效

时间:2017-01-17 09:15:19

标签: c# asp.net-mvc entity-framework linq

在执行以下查询时,我收到错误: -

public MioLMOrderConfirmAddress GetAddress(long headerId,int addressCategory)
    {
        using (var c = new TenantEntities(_tenantConString))
        {
            var data =
                c.MioLMOrderConfirmAddresses.FirstOrDefault(
                    x => x.MioLMOrderConfirmHeaderId == headerId && x.AddressCategoryId == addressCategory);
            return data;
        }
    }

错误:

  

附加信息:来自物化的指定演员表   ' System.Int32'输入' System.Int64'类型无效。

我的模型课在这里

public partial class MioLMOrderConfirmAddress
{
    public long Id { get; set; }
    public long MioLMOrderConfirmHeaderId { get; set; }
    public Nullable<long> MioLMOrderConfirmLineId { get; set; }
    public int AddressCategoryId { get; set; }
    public string FullAddress { get; set; }
    public string StreetName { get; set; }
    public string AdditionalStreetName { get; set; }
    public string CityName { get; set; }
    public string PostalZone { get; set; }
    public string CountrySubEntity { get; set; }
    public string CountryCode { get; set; }
    public string BuildingNumber { get; set; }
    public string AddressFormatCode { get; set; }
    public string AddressTypeCode { get; set; }
    public string BlockName { get; set; }
    public string BuildingName { get; set; }
    public string CitySubDivisionName { get; set; }
}

如何解决此错误?

这是MioLMOrderConfirmAddress表的屏幕截图 MioLMOrderConfirmAddress Table

1 个答案:

答案 0 :(得分:0)

代码优先用户的答案......

如果您可以将值保存在“int”中,则可以通过将属性从long转换为int(以及从long转换为int?)来解决此问题。

然后,告诉您的字段实际上是OnModelCreating方法中的“bigint”或“decimal”:

class X {
    X(std::conditional_t<some_cond, const X&, X&&>) = default;
    X(std::conditional_t<some_cond, X&&, const X&>) = delete;
    ...
};

如果您的数据库列是int,bigint或decimal。

希望这可以帮助其他人解决这个问题