【培訓】 項目實訓中遇到的問題 總結 跟解決方法


在培訓中遇到的問題 在此總結 避免以后遇到相同問題要找半天才能解決

       【菜鳥 解決問題】 

   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);
        }

  

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM