现在我已经让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 ......
有什么想法吗?
答案 0 :(得分:0)
正如你在其他帖子中提到的,由于连接器中存在错误,mysql正在隐藏你的“真实”异常。
Subsonic 3.0.0.4 ActiveRecord Template for MySQL error on inserting new record