1. 程式人生 > >EF-DbUpdateException--實體類和資料庫列不對應的解決方案

EF-DbUpdateException--實體類和資料庫列不對應的解決方案

錯誤資訊

1.VS實體類裡面的欄位

2資料庫裡面的欄位

猜測是因為欄位數不匹配導致的

3刪除多餘欄位

5.結果

錯誤資訊貼上:


-------------------------Log_Header-------------------------
2015-06-06 18:54:05,942 [6] ERROR log - System.Data.Entity.Infrastructure.DbUpdateException: 更新條目時出錯。有關詳細資訊,請參閱內部異常。 ---> System.Data.Entity.Core.UpdateException: 更新條目時出錯。有關詳細資訊,請參閱內部異常。 ---> System.Data.SqlClient.SqlException: 不能將值 NULL 插入列 'LoTVersion',表 'LoTBlog.dbo.BaseInfo';列不允許有 Null 值。INSERT 失敗。
語句已終止。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
在 System.Data.SqlClient.SqlDataReader.get_MetaData()
在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__c(DbCommand t, DbCommandInterceptionContext`1 c)
在 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
在 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.Execute(Dictionary`2 identifierValues, List`1 generatedValues)
在 System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
--- 內部異常堆疊跟蹤的結尾 ---
在 System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
在 System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<Update>b__2(UpdateTranslator ut)
在 System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update[T](T noChangesResult, Func`2 updateFunction)
在 System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update()
在 System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__d()
在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
在 System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction)
在 System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClassb.<SaveChangesInternal>b__8()
在 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
在 System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction)
在 System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)
在 System.Data.Entity.Internal.InternalContext.SaveChanges()
--- 內部異常堆疊跟蹤的結尾 ---
在 System.Data.Entity.Internal.InternalContext.SaveChanges()
在 System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
在 System.Data.Entity.DbContext.SaveChanges()
在 LoT.Dal.BaseDal`1.AddModel(T model) 位置 e:\Works\Net\LoTBlog\001-Source\LoTCode\LoTBlog\LoT.Dal\BaseDal.cs:行號 26
在 LoT.Service.BaseService`1.AddModel(T model) 位置 e:\Works\Net\LoTBlog\001-Source\LoTCode\LoTBlog\LoT.Service\BaseService.cs:行號 33
在 LoTBlog.Back.Controllers.BaseInfoController.Update(BaseInfo baseInfo) 位置 e:\Works\Net\LoTBlog\001-Source\LoTCode\LoTBlog\LoTBlog.Back\Controllers\BaseInfoController.cs:行號 164
在 lambda_method(Closure , ControllerBase , Object[] )
在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
在 System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult)

相關推薦

EF-DbUpdateException--實體資料庫對應解決方案

錯誤資訊 1.VS實體類裡面的欄位 2資料庫裡面的欄位 猜測是因為欄位數不匹配導致的 3刪除多餘欄位 5.結果 錯誤資訊貼上: -------------------------Log_Header-------------------------2015-06-06

MyBatis由淺入深學習總結之二:MyBatis解決Java實體資料庫表字段一致方法總結

在此,首先說明一點任何永續性框架都需要解決一個問題,那就是Java實體類的欄位一般來說基本上會與資料庫表中欄位不一致,那麼它們是如何解決的呢?咱們以Hibernate和SpringJDBC為例說明一下; 1、Hibernate中一般通過XML對映和註解的方式解決不一致問題,

實體資料庫多對一一對多對映

用Teacher類和Grade舉例,Teacher類包含grade類的屬性,Grade也包含Teacher類的屬性,但是Grade中的Teaher屬性要用List<Teahcer> 這就是多對一和一對多,實體類程式碼如下: ------------------------------

實體資料庫對映--配置檔案

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://hibernate.sou

PHP的strtotime()函式轉換的時間戳實際時間一致解決方案

做一個時間區間搜尋的功能時,遇到一個問題,使用strtotime()轉換時間去比較時,發現搜尋不到,前端傳遞的是   但是PHP轉換後時間戳為1540732715,相當於   與實際時間相差8小時,所以搜尋不到的原因就在此。解決問題很簡單。 修改P

NER 中word數量tag數量一致解決方案以及tf.string_split用法

句子中有中文空格 而tf.string_split(source, delimiter=’ ‘)預設是英文空格 導致NER 中word數量和tag數量不一致。 tf.string_split(source, delimiter=' ') source是一維陣列,用於將一組字串

RedHat4找到網絡卡mysql啟動解決方案

本文記錄了一次RedHat AS release4上出現找不到網絡卡和mysql啟動不了解決方案並解決問題的過程 0.機器環境: [[email protected] ~]# lsb_rel

RedisDB資料一致解決方案

大多情況下,我們使用快取都是這樣的策略:先讀快取,讀取不到就讀資料庫然後同步到快取中。 問題出現場景 問題就是在併發訪問中,不論是先寫庫,再刪除快取;還是先刪快取,再寫庫,都有可能出現數據不一致的情況 1、在併發中是無法保證讀寫的先後順序的,如果刪掉了

MyBatis - 實體的屬性名資料庫列名一致時的兩種解決辦法!

問題:兩者不一致時 , 查詢結果無法封裝到實體!(也就無法查詢出來) ① 查詢的sql語句中使用別名進行查詢. 但要注意: 欄位名的別名 要和 實體類的屬性名一致! UserMapper.xml <!-- namespace:介面的全路徑名.

SpringBoot中使用Mybatis Generator進行資料庫表逆向工程自動生成實體mapping對映

1.首先在專案中建立一個GeneratorDisplay工具類,放在com.springbootdemo.util下 package com.springbootdemo.util; import java.io.File; import java.util.ArrayList; imp

MyBatis學習(四)--解決實體屬性資料庫欄位一致的問題

寫在前面 孤傲蒼狼的部落格:https://www.cnblogs.com/xdp-gacl/category/655890.html 程式碼中會有很多重要的註釋,請不要忽略。 前面在建立實體時,強調過一定要和資料庫列名一致。如果不一致結果是對映不到實體中的,但是資料庫和j

hibernate通過實體hbm.xml生成資料庫

    由於某些原因,上某網站找了一個適合自己需求的開源專案,框架為ssh,難耐沒有sql指令碼,於是想到hibernate的正向生成資料庫表,首先做好準備工作:     1、建好對應的資料庫     2、需要一個hibernate

利用MyBatis-Generator工具根據現有資料庫生成實體Mapper介面

第一步:在pom.xml中匯入mybatis-generator工具包 <dependencies> <dependency> <groupId>org.mybatis.generator</groupId>

通過資料庫中的表,使用 MyEclipse2017的反向生成工具-->hibernate反轉引擎引擎(MyEclipse2017自帶的外掛) 來反轉生成實體對應的對映檔案

Java檢視 1、在MyEclipse中,Java檢視下,新建一個普通的java project,新建該專案的目的是:用來接收反轉引擎生成的實體類和對應的對映檔案。 2、在專案上右鍵 --> Configure Facets... --> Install Hibernate Facet   

Netbeans 通過資料庫生成實體JPA控制器使用

使用資料庫類和JPA可以簡化資料庫互動程式設計。使用步驟如下:1. 在“服務”中建立要連線的資料庫。2. 新建專案3. 新建 -》“永續性”-》“通過資料庫生成實體類”4.選中要生成資料庫中的表,對應生成類。5.新建-》“永續性”-》“通過實體生成JPA控制器類”6.選中剛剛

Hibernate之*hbm.xml檔案實體操作資料庫實現插入查詢

一、實體類(Entity) package com.javademo; import java.util.Date; public class Event { private Long id; private String title;

使用EF CodeFirst根據實體生成資料庫

EF CodeFirst 建立資料庫 很多時候,一個專案只有模型層或者某幾個模型類,沒有資料庫指令碼,想建立資料庫來執行專案,只能一個個敲SQL建表語句或圖形化操作,十分耗時間,也很費腦細胞, 最近發現可以利用EF 裡的自動建立資料庫的功能,可以節約不少時間

mapper檔案中的resultMap宣告實體表的對映關係是是必要?

本文依照程式碼來說明這樣一個問題:如果我們的mapper檔案中沒有宣告欄位和實體類的屬性對應關係,那麼查詢出來的欄位的值能不能放到實體類中? 答案是:如果查詢的欄位(org_id)和實體類的欄位(org_id)完全一樣。則是可以對應把值賦給實體的。如果表中的欄

JavaWeb——教你寫bean實體Dao資料庫操作

初探 先認識一下這兩個類是做什麼的 bean類 使用者可以使用JavaBean技術將功能、處理、值、資料庫訪問和其他任何可以用java程式碼創造的物件進行打包,並且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、appl

Eclipse實現hibernate反向工程:從資料庫逆向生成實體hbm檔案

一、hibernate外掛安裝(已經安裝的可以略過) 通過Eclipse的Help->Install New Software 線上安裝外掛,外掛連線為: 其它版本 如下圖: hibernate外掛安裝好後,接下