实体框架6无法找到错误列

时间:2016-05-28 19:06:05

标签: c# sql asp.net-mvc entity-framework

我正在使用带有实体框架的MVC并收到以下错误。

  

来自物化系统.Int64'的指定演员表。输入' System.String'类型无效。

错误是可以理解的并且易于解决,但我面临的问题是在我的SQL查询中我有很多列,从错误详细信息我看不出哪个列有这个特定问题,我必须逐个浏览所有列。

string Query= "select id,claim_no,emp_id,dept_id,location_id from staff";
var ctx = new TIAEntities()
ctx.Database.SqlQuery<ORM>(Query).ToList()

我也看过手表中的所有细节,但无法找到列名。

型号: -

public class ORM
        {

            public Int64 id { get; set; }
            public String claim_no { get; set; }
            public Int64 emp_id { get; set; }
            public Int64 dept_id { get; set; }
            public Int64 location_id { get; set; }
    } 

1 个答案:

答案 0 :(得分:0)

您可以使用以下解决方案:

$

var query = from o in ctx.ORM 
            select new 
            {
                id = o.id,
                claim_no = o.claim_no,
                emp_id = o.emp_id,
                dept_id = o.dept_id,
                location_id = o.location_id
            };

查询的类型是:
IQueryable的&LT;&GT;查询

查找哪个属性引发错误以使用此解决方案

  1. 在ActionResult方法中,为这样的“if(ModelState.IsValid)”添加else以在回发模式下从视图中获取问题并在else部分中设置断点,并在断点中停止后使用立即窗口的值像这个错误[0]的错误。

    var query = ctx.ORM.Select(o => new ORM 
                {
                    id = o.id,
                    claim_no = o.claim_no,
                    emp_id = o.emp_id,
                    dept_id = o.dept_id,
                    location_id = o.location_id
                });
    
  2. 使用此try catch查找属性的错误并点击它。

        if (ModelState.IsValid)
        {
            ...
        }
        else
        {
            var errors = ModelState.Where(x => x.Value.Errors.Count > 0).Select(x => new
            {
                x.Key,
                x.Value.Value,
                x.Value.Errors
            }).ToArray();
        }