我正在使用带有实体框架的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; }
}
答案 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;查询
查找哪个属性引发错误以使用此解决方案
在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
});
使用此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();
}