【发布时间】: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