SubSonic,GUID和MySQL Null参考例外

时间:2010-11-19 16:42:52

标签: c# mysql subsonic subsonic3

现在我已经让Subsonic工作了,我决定添加另一个类并完成我最初的目标。

这个实体类只有两个属性,一个是ID属性(类型为Guid),另一个是属性(类型为String)。

当我创建类的实例时,我设置Guid(使用System.Guid.NewGuid())使其具有值,然后设置Name,并尝试保存对象。

repo.Add<TestingGuid>(test);

这是我认为在早期的亚音速问题中导致我的Null Reference异常的原因。

例外(与上一个问题相同):

  

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):第35行          在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:

实体类只是:

namespace gc_ss
{
    public class TestingGuid
    {
        public static TestingGuid GetNewTestingGuid() 
        {
            TestingGuid row = new TestingGuid();
            row.ID = System.Guid.NewGuid();
            return row;
        }

        public Guid ID { get; set; }
        public string Name { get; set; }
    }
}

运行它的program.cs是:

var repo = new SimpleRepository("gcdb", SimpleRepositoryOptions.RunMigrations);

var test = TestingGuid.GetNewTestingGuid();
test.Name = "Mike";
repo.Add<TestingGuid>(test);

数据库表创建得很好,有两列,ID列(二进制(16))和名称(VARCHAR(255))。

似乎不喜欢Guid ......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

正如你在其他帖子中提到的,由于连接器中存在错误,mysql正在隐藏你的“真实”异常。

Subsonic 3.0.0.4 ActiveRecord Template for MySQL error on inserting new record