指定的强制类型转换无效的C#实体框架 [英] Specified cast is not valid C# Entity Framework

查看:54
本文介绍了指定的强制类型转换无效的C#实体框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在获取此指定的转换在我的代码中无效,但是当我连接到备份数据库时,我没有收到指定的转换无效的错误.我不确定发生了什么.

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.

我的控制器

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;
            }
        }
    }
}

StackTrace

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 

推荐答案

将备份数据库与无效数据库进行比较,尤其是ID列.确保它们同时匹配 Type (浮点型)和可为空(NULL)的功能.

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).

抛出异常表示列之一(类型为"double")与模型不匹配.

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

"mp"表上的ID列是模型中唯一的双列.

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

这篇关于指定的强制类型转换无效的C#实体框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆