Subsonic 添加时出现空引用异常

Subsonic 添加时出现空引用异常,subsonic,subsonic3,Subsonic,Subsonic3,今天晚上我发现了亚音速,在使用了它和MySQL连接器版本之后,我终于让它接受了我的连接字符串,并建立了一个简单的存储库 所以我创建了一个简单的类,然后去镇上为类添加一些数据,然后创建一个repo,并试图保存记录 当我调用时,我似乎能从中得到的只是空异常错误: 回购增加(用户) 不知道什么是空的,错误也不是很清楚 有一次,我将用户类中我的ID字段的类型更改为long,并从亚音速中得到另一个错误(说它无法分辨哪个字段是我的ID字段,告诉我将其命名为ID或在其上添加标记,但它已经命名为ID) 我已经在

今天晚上我发现了亚音速,在使用了它和MySQL连接器版本之后,我终于让它接受了我的连接字符串,并建立了一个简单的存储库

所以我创建了一个简单的类,然后去镇上为类添加一些数据,然后创建一个repo,并试图保存记录

当我调用时,我似乎能从中得到的只是空异常错误:

回购增加(用户)

不知道什么是空的,错误也不是很清楚

有一次,我将用户类中我的ID字段的类型更改为long,并从亚音速中得到另一个错误(说它无法分辨哪个字段是我的ID字段,告诉我将其命名为ID或在其上添加标记,但它已经命名为ID)

我已经在类中的每个字段中放置了数据,甚至是数据库中不需要的字段,但什么都没有

我花了一整晚的时间在谷歌上搜索我的错误信息,但是运气不好,网站上的文档也没有给我任何帮助

你知道我做错了什么,或者我怎么可能诊断出这个

提前感谢您的帮助

以下是例外情况的详细信息

System.NullReferenceException未处理 Message=对象引用未设置为对象的实例。 Source=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) 在亚音速.DataProviders.DbDataProvider.ExecuteReader(QueryCommand qry) 在SubSonic.Query.Insert.ExecuteReader()中 在亚音速.Repository.SimpleRepository.Add[T](T项) 在C:\Users\Michaelm\Desktop\Subsonic\u Demo\gc\u ss\gc\u ss\Program.cs中的gc\u ss.Program.Main(字符串[]args)处:第27行 位于System.AppDomain.\u nexecutestAssembly(程序集,字符串[]args) 位于System.AppDomain.ExecuteAssembly(字符串汇编文件、证据汇编安全性、字符串[]args) 在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()上 位于System.Threading.ThreadHelper.ThreadStart\u上下文(对象状态) 在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态) 位于System.Threading.ThreadHelper.ThreadStart()处 内部异常:

另一次更新

我注意到,如果我更改了类(用户)并修改了其中一个属性,那么属性更改将反映在数据库中。此外,如果我删除表,它将基于我的类进行构造。因此,迁移部分正在工作,这是之后发生的事情

最终更新

好的,我删除了表,并将类更改为使用与ID字段一样长的字段。设置为RunMigrations,然后再次运行,但由于ID没有默认值,所以失败了。我将MySQL中的列设置为AutoIncrement,现在一切正常。不确定它与昨天设置为long有什么不同(除非没有像我想象的那样应用更改)


无论如何,我想这个问题已经解决了…

这是mysql.data提供程序的问题。通常,连接器会抛出一个有意义的异常,但在此之前,连接器本身有一个内部nullreference异常

看看我的答案:

这就解释了如何解决这个问题。

对不起,当我决定发布这个问题时,我已经回到家了:我更新了我的答案。生成部分的sql语法很可能有错误。不是每种.net类型都可以在亚音速下使用。看看mysql.t,其中有一个方法可以进行映射,我想很长一段时间内,您必须修复定义DBType的字符串(我建议使用BIGINT)