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

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

       【菜鸟 解决问题】 

   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”来查看是哪个字段的错误!

  【大神截图】原址:http://www.cnblogs.com/zhangliming/p/2675111.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);
        }

  

 

  

 

posted @ 2014-12-13 21:33  沐雨清风  阅读(7008)  评论(0编辑  收藏  举报