添加时为null引用异常

时间:2010-11-19 04:59:14

标签: subsonic subsonic3

我今天晚上发现了SubSonic,经过一段时间玩它和MySQL Connector版本后,我终于接受了我的连接字符串设置一个简单的存储库。

所以我创建了一个简单的类,然后去城里向类中添加一些数据,然后创建一个repo,并尝试保存记录。

当我打电话时,所有我似乎都可以摆脱它:

repo.Add(用户);

不知道什么是空的,而且错误不是很清楚。

有一次,我将我的User类中我的ID字段的类型更改为long并从SubSonic中获得了另一个错误(说它无法告诉我的ID字段是哪个字段,告诉我将其命名为ID或在其上放置一个标签,但它已被命名为ID)

我将数据放在类中的每个字段中,即使是那些不是每个数据库所需的字段,也没有。但

我在晚上的剩余时间里使用谷歌搜索有关我的错误的信息,但没有运气,网站上的文档也没有让我到任何地方。

知道我做错了什么,或者我怎么可能诊断出来?

提前感谢您的帮助......

以下是例外情况

System.NullReferenceException未处理   Message =对象引用未设置为对象的实例。   来源= MySql.Data   堆栈跟踪:        at MySql.Data.MySqlClient.MySqlConnection.get_ServerThread()        at MySql.Data.MySqlClient.MySqlConnection.Abort()        at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)        at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)        在System.Data.Common.DbCommand.ExecuteReader(CommandBehavior行为)        在SubSonic.DataProviders.DbDataProvider.ExecuteReader(QueryCommand qry)        在SubSonic.Query.Insert.ExecuteReader()        在SubSonic.Repository.SimpleRepository.Add [T](T item)        在C:\ Users \ Michaelm \ Desktop \ Subsonic_Demo \ gc_ss \ gc_ss \ Program.cs中的gc_ss.Program.Main(String [] args):第27行        在System.AppDomain._nExecuteAssembly(Assembly assembly,String [] args)        在System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)        在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()        在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)        在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)        在System.Threading.ThreadHelper.ThreadStart()   InnerException:

另一次更新

我注意到如果我更改了类(User)并修改了其中一个属性,那么属性更改会反映在数据库中。此外,如果我删除表,它将根据我的类构建。所以迁移部分正在运行,之后发生了一些事情。

最终更新

好的,我删除了表,并将类改为使用long作为ID字段。设置为RunMigrations,然后再次运行,由于没有ID的默认值,它失败了。我将MySQL中的列设置为AutoIncrement,现在一切正常。不确定它与昨天设置的时间有何不同(除非改变没有得到应用,就像我认为的那样)。

无论如何,所以我猜这个问题已经结束......

1 个答案:

答案 0 :(得分:0)

这是mysql.data提供程序的问题。通常情况下,连接器会抛出一个有意义的异常,但在此之前会有一个内部空引用异常。

在这里看看我的答案:Subsonic 3.0.0.4 ActiveRecord Template for MySQL error on inserting new record
这解释了如何解决这个问题。