Specified cast is not valid C# Entity Framework

醉酒当歌 提交于 2019-12-11 09:20:10

问题


Hi I have been getting this Specified cast is not valid in my code but when I connect to my backup database I do not get the Specified cast is not valid error. I am not sure what is going on.

Again, this code works perfectly on one database and gives me the error on the other.

My Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Linq.SqlClient;
using System.Text.RegularExpressions;
using MvcPaging;
using lookups.Models;
using lookups.Helpers;


namespace lookups.Controllers
{
public class MPController : Controller
{
    // GET: /Lookups/
    public LpAppsDataDataContext db = new LpAppsDataDataContext();
    public const int DefaultPageSize = 30;


    //get MP Data
         if (countSpace == 1 && v.Count(char.IsLetter) > 3)
                            {
                                if (SqlString.CheckStringForComma(v))
                                {
                                    mpq = db.mps
                                         .Where(c => c.NAME_LAST.ToLower().Contains(SqlString.GetSplitCommaString(v.ToLower(), 0))).OrderBy(c => c.NAME_LAST).ThenBy(f => f.NAME_FIRST);
                                }
                                else
                                {
                                    mpq = db.mps
                                       .Where(c => c.NAME_LAST.ToLower().Contains(SqlString.GetSplitString(v.ToLower(), 1)) || c.NAME_LAST.Contains(SqlString.GetSplitString(v.ToLower(), 0))).OrderBy(c => c.NAME_LAST).ThenBy(f => f.NAME_FIRST);
                                }
                            }
                            else
                            {
                                mpq = db.mps
                                       .Where(c => c.NAME_L
                ViewBag.count = mpq.Count();
            }
        }
        else { ViewBag.count = 0; }
        @ViewBag.col = "Unclaimed Pensions";

        return View(mpq.ToPagedList(currentPageIndex, DefaultPageSize));
    }

}
}

My Model

[global::System.Data.Linq.Mapping.TableAttribute(Name = "dbo.mp")]
public partial class mp
{

    private string _COMPANY;

    private string _STATE;

    private System.Nullable<System.DateTime> _DOPT;

    private string _SP_STATE;

    private string _PRT_NAME;

    private string _NAME_LAST;

    private string _NAME_FIRST;

    private string _LASTADDRESS;

    private System.Nullable<double> _ID;

    private System.Nullable<System.DateTime> _DATE;

    private string _PLAN_TYPE;

    public mp()
    {
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_COMPANY", DbType = "NVarChar(255)")]
    public string COMPANY
    {
        get
        {
            return this._COMPANY;
        }
        set
        {
            if ((this._COMPANY != value))
            {
                this._COMPANY = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_STATE", DbType = "NVarChar(255)")]
    public string STATE
    {
        get
        {
            return this._STATE;
        }
        set
        {
            if ((this._STATE != value))
            {
                this._STATE = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_DOPT", DbType = "DateTime")]
    public System.Nullable<System.DateTime> DOPT
    {
        get
        {
            return this._DOPT;
        }
        set
        {
            if ((this._DOPT != value))
            {
                this._DOPT = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_SP_STATE", DbType = "NVarChar(255)")]
    public string SP_STATE
    {
        get
        {
            return this._SP_STATE;
        }
        set
        {
            if ((this._SP_STATE != value))
            {
                this._SP_STATE = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_PRT_NAME", DbType = "NVarChar(255)")]
    public string PRT_NAME
    {
        get
        {
            return this._PRT_NAME;
        }
        set
        {
            if ((this._PRT_NAME != value))
            {
                this._PRT_NAME = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_NAME_LAST", DbType = "NVarChar(255)")]
    public string NAME_LAST
    {
        get
        {
            return this._NAME_LAST;
        }
        set
        {
            if ((this._NAME_LAST != value))
            {
                this._NAME_LAST = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_NAME_FIRST", DbType = "NVarChar(255)")]
    public string NAME_FIRST
    {
        get
        {
            return this._NAME_FIRST;
        }
        set
        {
            if ((this._NAME_FIRST != value))
            {
                this._NAME_FIRST = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_LASTADDRESS", DbType = "NVarChar(255)")]
    public string LASTADDRESS
    {
        get
        {
            return this._LASTADDRESS;
        }
        set
        {
            if ((this._LASTADDRESS != value))
            {
                this._LASTADDRESS = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_ID", DbType = "Float")]
    public System.Nullable<double> ID
    {
        get
        {
            return this._ID;
        }
        set
        {
            if ((this._ID != value))
            {
                this._ID = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_DATE", DbType = "DateTime")]
    public System.Nullable<System.DateTime> DATE
    {
        get
        {
            return this._DATE;
        }
        set
        {
            if ((this._DATE != value))
            {
                this._DATE = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_PLAN_TYPE", DbType = "NVarChar(255)")]
    public string PLAN_TYPE
    {
        get
        {
            return this._PLAN_TYPE;
        }
        set
        {
            if ((this._PLAN_TYPE != value))
            {
                this._PLAN_TYPE = value;
            }
        }
    }
}

StackTrace

Line 257:            @ViewBag.col = "Unclaimed Pensions";
Line 258:
Line 259:            return View(mpq.ToPagedList(currentPageIndex,      DefaultPageSize));
Line 260:        }
Line 261:

Stack Trace: 


[InvalidCastException: Specified cast is not valid.]
 System.Data.SqlClient.SqlBuffer.get_Double() +51
System.Data.SqlClient.SqlDataReader.GetDouble(Int32 i) +62
 Read_mp(ObjectMaterializer`1 ) +2057
 System.Data.Linq.SqlClient.ObjectReader`2.MoveNext() +32
   System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection) +392
   System.Collections.Generic.List`1.AddRange(IEnumerable`1 collection) +10
   MvcPaging.PagedList`1..ctor(IQueryable`1 source, Int32 index, Int32    pageSize, Nullable`1 totalCount) +2014
   MvcPaging.PagingExtensions.ToPagedList(IQueryable`1 source, Int32 pageIndex, Int32 pageSize, Nullable`1 totalCount) +134
   lookups.Controllers.MPController.Mp(Nullable`1 page, String sortOrder) in 

回答1:


Compare the backup database with the database that doesn't work, specifically the ID column. Make sure they match both the Type (Float) and ability to be Nullable (NULL).

The exception being thrown indicates that one of the columns (that is of type "double") doesn't match the model.

The ID column on the "mp" table is the only double column in your model.



来源:https://stackoverflow.com/questions/31169249/specified-cast-is-not-valid-c-sharp-entity-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!