2010-11-19 162 views
1

今天晚上我發現了SubSonic,並且在它和MySQL連接器版本上玩了一下之後,我終於接受了設置簡單存儲庫的連接字符串。添加空引用異常

所以我創建了一個簡單的類,然後去鎮上添加一些數據到類然後創建一個回購,並試圖保存記錄。

所有我似乎可以擺脫它是空例外錯誤,當我打電話:

repo.Add(用戶);

不知道什麼是空的,但錯誤不是很清楚。

有一次,我將我的User類中的ID字段的類型更改爲long,並從SubSonic中獲得了另一個錯誤(說它不能告訴我的ID字段是什麼字段,告訴我將其命名爲ID或者在它上面加一個標籤,但它已經被命名爲ID)

我已經將數據放在類的每個字段中,即使那些不是每個數據庫都需要的數據,但什麼都沒有。

我在晚上的其餘時間搜索了一些有關我的錯誤的信息,但沒有運氣,而且網站上的文檔也沒有讓我知道任何地方。

任何想法我做錯了什麼,或者我怎麼可能診斷這個?

在此先感謝您的幫助......

這裏的異常細節

System.NullReferenceException了未處理 消息=對象引用不設置到對象的實例。 源= MySql.Data 堆棧跟蹤: 在MySql.Data.MySqlClient.MySqlConnection.get_ServerThread() 在MySql.Data.MySqlClient.MySqlConnection.Abort() 在MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(的CommandBehavior行爲) 在MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(的CommandBehavior行爲) 在System.Data.Common.DbCommand.ExecuteReader(的CommandBehavior行爲) 在SubSonic.DataProviders.DbDataProvider.ExecuteReader(QueryCommand QRY) 在SubSonic.Query.Insert在C:\ Users \ Michaelm \ Desktop \ Subsonic_Demo \ gc_ss \ gc_ss \ P中的gc_ss.Program.Main(String [] args)處添加[T](T item) .ExecuteReader() 在System.AppDomain._nExecuteAssembly(Assembly assembly,String [] args) at System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args) at Microsoft.VisualStudio.HostingProcess.HostProc上的rogram.cs:line 27 .RunUsersAssembly() 在System.Threading.ThreadHelper.ThreadStart_Context(對象狀態) 在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回調,對象狀態) 在System.Threading.ThreadHelper.ThreadStart() 的InnerException:

另一個更新

我注意到,如果我更改類(用戶)並修改其中一個屬性,屬性更改會反映到數據庫中。此外,如果我放棄表,它會基於我的類構建。所以遷移部分正在工作,這是發生在那之後的事情。

最後更新

好吧,我刪除的表,並更改爲使用只要ID字段中的類。設置爲RunMigrations,然後再次運行,並且由於ID沒有默認值而失敗。我將MySQL中的列設置爲AutoIncrement,現在一切正常。不知道如何將它設置爲昨天很長時間(除非更改沒有像我認爲的那樣得到應用)。

無論如何,所以我想這個問題是關閉...

回答

0

這與mysql.data提供商的問題。通常情況下,連接器會拋出一個有意義的異常,但在發生這種情況之前,它自己會有一個內部的nullreference異常

看看我的答案在這裏:Subsonic 3.0.0.4 ActiveRecord Template for MySQL error on inserting new record
這解釋瞭如何解決這個問題。

+0

對不起,我已經回到家裏,當我決定發佈問題: – Mike 2010-11-19 14:46:25

+0

我更新了我的答案。你很可能在生成部分的sql語法中有錯誤。亞音速並非每個.net類型都可以使用。看看mysql.ttinclude那裏你有一個方法來做映射,我想只要你修復定義DBType的字符串(我會推薦BIGINT) – 2010-11-20 10:13:46