当前位置: 首页 > 面试题库 >

指定的强制类型转换无效的C#实体框架

齐奕
2023-03-14
问题内容

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

同样,此代码可在一个数据库上完美运行,而在另一个数据库上却给我错误。

我的控制器

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列是模型中唯一的双列。



 类似资料:
  • 指针变量数据类型的强制转换 必须显式强制类型转换,不允许隐式类型转换 指向空间的强制类型转换,本质上就是普通变量的强制类型转换 int a = 10; float b = 3.14; int *pa = &a; float *pb = &b; *pa = (int)*pb; // 等价于 a = (int)b; 指针本身强制类型转换,改变的是对其指向空间的引用方式(空间大小和存储结构) int

  • 本文向大家介绍C#中的自动类型转换和强制类型转换,包括了C#中的自动类型转换和强制类型转换的使用技巧和注意事项,需要的朋友参考一下 前面已经认识了不同的数据类型,你们有没有尝试过让不同的数据类型进行运算呢? 运行结果是:1 我们把一个整型的变量赋值给了一个浮点型的变量,可以正常的输出,如果我们把一个浮点型的变量赋值给一个整型的变量呢? 这样就会报错。 为什么呢?因为我们之前说过,变量就像一个容器,

  • 强制类型转换 隐式类型转换:隐式类型转换又称为自动类型转换,隐式类型转换可分为三种:算术转换、赋值转换和输出转换。 显式类型转换:显式类型转换又称为强制类型转换,指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,这种类型转换可能会造成数据的精度丢失。 数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。 转换的方法有两种: 自动转换(隐式转换):遵循一定的规则

  • 本文向大家介绍关于C++的强制类型转换浅析,包括了关于C++的强制类型转换浅析的使用技巧和注意事项,需要的朋友参考一下 前言 一说起强制类型转换大家都很熟悉,相信很多学习完C++的朋友还在使用C语言的强制类型的方式 (类型)变量. C++其实也具有自己的一套强制类型转换它们分明是:static_cast  reinterpret_cast  const_cast  dynamic_cast四种类型

  • 问题内容: 我在一个新项目中将Swift样板代码用于Core Data。我的文件有一个定义的单一实体()和一个属性()。 我有一个看起来像这样的文件: 当我运行它时,它起作用: 我什至可以进入iOS模拟器正在使用的SQLite数据库,并确认已添加该行。 但是,当我运行与上面完全相同的代码,但使用而不是时,出现了与…行关联的错误消息,导致崩溃。如果我继续执行,则每次执行线程1时它都会到达并位于线程1

  • Go 语言是一种强类型语言,而且没有隐式转换。也就是说运算符左右的变量类型必须一致,若不一致就会报错。为了使用户更加的容易使用,所以 Go 语言提供了各个类型之间强制类型转换的内置方法。 1. 整型和浮点型互相转换 整型和浮点型变量之间的相互转换相对容易,只需使用强制类型转换标志 type(variable)就好了。需要注意的是,当高精度向低精度类型转换的时候,会失真。即浮点型向整型转换的时候会失