【问题标题】:SubSonic, GUIDs, and MySQL Null Reference ExceptionSubSonic、GUID 和 MySQL 空引用异常
【发布时间】:2010-11-19 16:42:51
【问题描述】:

现在我已经开始使用 Subsonic,我决定添加另一个类并完成我最初打算做的事情。

这个实体类只有两个属性,一个 ID 属性(Guid 类型)和一个 Name 属性(String 类型)。

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

repo.Add<TestingGuid>(test);

我认为这是导致我在之前的亚音速问题中出现 Null Reference 异常的原因。

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

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 35 中的 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() 内部异常:

实体类很简单:

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 列 (Binary(16)) 和 Name (VARCHAR(255))。

它似乎只是不喜欢 Guid...

有什么想法吗?

【问题讨论】:

  • 只检查repo变量是否为空?
  • 感谢您的评论,但不,repo,就像测试一样,对象都已设置并正在工作(repo 促进了表的创建没有问题)。不过还是谢谢。

标签: c# mysql subsonic subsonic3


【解决方案1】:

正如您在另一篇文章中提到的,由于连接器中的错误,mysql 正在向您隐藏“真正的”异常。

Subsonic 3.0.0.4 ActiveRecord Template for MySQL error on inserting new record

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多