您的位置:首页 > 其它

【培训】 项目实训中遇到的问题 总结 跟解决方法

2020-03-01 07:07 92 查看

在培训中遇到的问题 在此总结 避免以后遇到相同问题要找半天才能解决

       【菜鸟 解决问题】 

   1、在查询数据时转换Json字符串时出现数据类型错误  "其他信息: DataSet 不支持 System.Nullable<>。"

             【错误】table.Columns.Add(prop.Name, prop.PropertyType);【标红的就是报错数据类型】

             【解决方法】把上面 那句换为:table.Columns.Add(prop.Name);  可以解决此问题

 

/// <summary>
/// 创建表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static DataTable CreateTable<T>()
{
Type entityType = typeof(T);
DataTable table = new DataTable(entityType.Name);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);

foreach (PropertyDescriptor prop in properties)
{
//table.Columns.Add(prop.Name);//换为这个后能解决错误问题
table.Columns.Add(prop.Name, prop.PropertyType);//在查询数据时转换Json字符串时出现数据类型错误  "其他信息: DataSet 不支持 System.Nullable<>。"
}
return table;
}

 2、在添加数据时报错:“对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性” 报这样错误时我们都不知道是哪个字段报错。可以使用 “DbEntityValidationException”来查看是哪个字段的错误!

  【大神截图】原址:https://www.geek-share.com/detail/2598587241.html

 但是,按照他的提示 “See 'EntityValidationErrors' property for more details.” 去 Exception 中查看,却只能看到

 

 

并不能看到具体的是那个属性为什么验证不通过,也许不少人都遇到这种情况。

 

这里给大家介绍一个Exception类,让我们能够轻松的知道具体的哪一个字段出了什么问题。

 

那就是 System.Data.Entity.Validation.DbEntityValidationException,相信代码都知道怎么写了,最简单的就是

 

try
{
// 写数据库
}
catch (DbEntityValidationException dbEx)
{

}

 

在 dbEx 里面中我们就可以看到

 

 

这样子我们就能看到 EntityValidationErrors 所有的 ValidationErrors 的详细信息了。

 3、删除数据时报错:此操作的参数类型“Edm.Int32”和“Edm.String”不兼容。 附近 WHERE 谓词, 列 1, 列 80.错误

某个主键值的类型与实体中定义的类型不匹配。有关详细信息,请参阅内部异常。

解决方法:红色位置转换参数

public string Delete(FormCollection collection)
{
try
{
// TODO: Add delete logic here
string role = collection["students"];
string[] Idarr = role.Split(',');
for (int i = 0; i < Idarr.Length; i++)
{
UnitOfWork.RoleInfoRepositort.Delete(int.Parse(Idarr[i]));
UnitOfWork.SaveChang();
}
return "ok";
}
catch (Exception ee)
{
throw ee.InnerException;
}
}

 

4、

传入字典的模型项的类型为“System.Linq.Enumerable+WhereSelectEnumerableIterator`2[HotelShow.SQLDAL.Hotel+OrderRow,HotelShow.Model.Order]”,但此字典需要类型“System.Collections.Generic.IEnumerable`1[HotelShow.Model.Customer]”的模型项。

public ActionResult Details(string id)
{
var list = UnitOfWork.EmployeeInfoRepository.GetList(e => e.EmployeeId == id);//这个位置报错
return View(list);
}

  因为是根据Id查询的数据,必要的在后面single()一下!

public ActionResult Details(string id)
{
var list = UnitOfWork.EmployeeInfoRepository.GetList(e => e.EmployeeId == id).Single();//改正后的数据
return View(list);
}

  

 

  

 

转载于:https://www.cnblogs.com/TwilightSnow/p/4161884.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
diligui8211 发布了0 篇原创文章 · 获赞 0 · 访问量 81 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: