Specified cast is not valid C# Entity Framework
11,787
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.
Author by
Ren44
Just a young developer trying to learn as much as possible from the community.
Updated on June 04, 2022Comments
-
Ren44 almost 2 years
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