【问题标题】:null reference exceptions when adding添加时空引用异常
【发布时间】:2010-11-20 18:12:40
【问题描述】:

我今天晚上发现了 SubSonic,在玩了一点它和 MySQL 连接器版本之后,我终于让它接受我的连接字符串设置一个简单的存储库。

所以我创建了一个简单的类,然后到镇上向该类添加一些数据,然后创建一个 repo,并尝试保存记录。

当我调用时,我似乎只能摆脱空异常错误:

repo.Add(用户);

虽然不知道什么是 null,而且错误也不是很清楚。

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

我已经在类的每个字段中放入了数据,即使是那些数据库不需要的字段,但什么也没有。

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

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

提前感谢您的帮助...

这是异常详情

System.NullReferenceException 未处理 Message=对象引用未设置为对象的实例。 来源=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.ExecuteReader() 在 SubSonic.Repository.SimpleRepository.Add[T](T 项) 在 C:\Users\Michaelm\Desktop\Subsonic_Demo\gc_ss\gc_ss\Program.cs:line 27 中的 gc_ss.Program.Main(String[] args) 在 System.AppDomain._nExecuteAssembly(程序集程序集,字符串 [] 参数) 在 System.AppDomain.ExecuteAssembly(字符串 assemblyFile,证据 assemblySecurity,String [] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ThreadHelper.ThreadStart_Context(对象状态) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback 回调,对象状态) 在 System.Threading.ThreadHelper.ThreadStart() 内部异常:

另一个更新

我注意到,如果我更改类(用户)并修改其中一个属性,则属性更改会反映在数据库中。此外,如果我放下表格,它会根据我的班级构建。所以迁移部分正在工作,之后会发生一些事情。

最终更新

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

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

【问题讨论】:

    标签: subsonic subsonic3


    【解决方案1】:

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

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

    【讨论】:

    • 抱歉,我决定发这个问题的时候已经在家了:
    • 我更新了我的答案。您很可能在生成部分的 sql 语法中有错误。并非每种 .net 类型都可以开箱即用地使用亚音速。看看 mysql.ttinclude 那里你有一个方法来做映射,我想你必须修复定义 DBType 的字符串(我会推荐 BIGINT)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 2011-05-16
    • 1970-01-01
    相关资源
    最近更新 更多