嗨,我一直在代码中看到这个指定的转换无效,但是当我连接到备份数据库时,我没有收到指定的转换无效的错误。我不确定发生了什么。
同样,此代码可在一个数据库上完美运行,而在另一个数据库上却给我错误。
我的控制器
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)); } } }
我的模特
[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; } } } }
堆栈跟踪
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
将备份数据库与无效数据库进行比较,尤其是将ID列进行比较。确保它们同时匹配 类型 (浮点数)和可为 空 (NULL)的能力。
引发异常表示列之一(类型为“ double”)与模型不匹配。
“ mp”表上的ID列是模型中唯一的双列。