我今天晚上发现了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,现在一切正常。不确定它与昨天设置的时间有何不同(除非改变没有得到应用,就像我认为的那样)。
无论如何,所以我猜这个问题已经结束......
答案 0 :(得分:0)
这是mysql.data提供程序的问题。通常情况下,连接器会抛出一个有意义的异常,但在此之前会有一个内部空引用异常。
在这里看看我的答案:Subsonic 3.0.0.4 ActiveRecord Template for MySQL error on inserting new record
这解释了如何解决这个问题。