對一個或多個實體的驗證失敗。有關詳細信息,請參閱“EntityValidationErrors”屬性


使用asp.net+EF5.0練習的時候,遇到這樣一個問題:

  對一個或多個實體的驗證失敗。有關詳細信息,請參見“EntityValidationErrors”屬性

 

但是感到很疑惑,去百度,說是關閉EF驗證,即可

修改:

SaveChanges前先關閉驗證實體有效性(ValidateOnSaveEnabled)這個開關

可以在 Controller層這樣關閉

?
1
2
3
db.Configuration.ValidateOnSaveEnabled = false ;
int count = db.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true ;

或者在 DAL層,對整個系統關閉

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// 創建 EF上下文 對象,在線程中共享 一個 上下文對象
/// </summary>
/// <returns></returns>
public DbContext GetDbContext()
{
     //從當前線程中 獲取 EF上下文對象
     DbContext dbContext = CallContext.GetData( typeof (DBContextFactory).Name) as DbContext;
     if (dbContext == null )
     {
         dbContext = new IZhanShiEntities();
         dbContext.Configuration.ValidateOnSaveEnabled = false ;
         //將新創建的 ef上下文對象 存入線程
         CallContext.SetData( typeof (DBContextFactory).Name, dbContext);
     }
     return dbContext;
}

關閉之后,不報這個錯了,轉而報另外要給錯誤:

  SqlException (0x80131904): 將截斷字符串或二進制數據。 語句已終止。

這才是問題所在   可以說 是你在操作數據庫的時候,有字段超過了數據庫里面 你字段的限制大小

查看代碼,果然有字段太長了。

 

問題原因:

1. 非空列未插入值錯誤

2. 多個表間外鍵列長度不一樣        

3. ef上下文對象db為空         

4. ef上下文設置屬性為 db.Configuration.ValidateOnSaveEnabled = false;

5. 內容長度超過列最大長度

 

我的錯誤原因是沒有給Position賦值,它的值是null,所以報錯。(Position是Employees的主鍵表)

對一個或多個實體的驗證失敗。有關詳細信息,請參閱“EntityValidationErrors”屬性。


免責聲明!

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



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