【发布时间】: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 有何不同(除非没有像我想象的那样应用更改)。
无论如何,所以我想这个问题已经结束了......
【问题讨论】: