2010-11-19 28 views
0

Maintenant que Subsonic fonctionne, j'ai décidé d'ajouter un autre cours et d'accomplir ce que j'avais initialement prévu de faire.SubSonic, GUID et Exception de référence Null MySQL

Cette classe d'entité a seulement deux propriétés, une propriété ID (type Guid) et une propriété Name (type String).

Lorsque je crée une instance de la classe, je définis Guid (en utilisant System.Guid.NewGuid()) afin qu'il ait une valeur, puis définissez le nom et essayez d'enregistrer l'objet.

repo.Add<TestingGuid>(test); 

C'est ce qui, selon moi, causait mon exception de référence nulle dans une question subsonique antérieure.

L'exception est (identique à la dernière question):

System.NullReferenceException était unhandled message = référence d'objet non définie à une instance d'un objet. Source = MySql.Data StackTrace: à MySql.Data.MySqlClient.MySqlConnection.get_ServerThread() à MySql.Data.MySqlClient.MySqlConnection.Abort() à MySql.Data.MySqlClient.MySqlCommand.ExecuteReader (comportement CommandBehavior) à MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader (comportement CommandBehavior) à System.Data.Common.DbCommand.ExecuteReader (comportement CommandBehavior) à SubSonic.DataProviders.DbDataProvider.ExecuteReader (QueryCommand qry) à SubSonic.Query.Insert .ExecuteReader() à SubSonic.Repository.SimpleRepository.Add [T] (élément T) à gc_ss.Program.Main (String [] args) dans C: \ Users \ Michaelm \ Desktop \ Subsonic_Demo \ gc _ss \ gc_ss \ Program.cs: ligne 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 (état de l'objet) à System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, ContextCallback rappel, l'état de l'objet) à System.Threading.ThreadHelper.ThreadStart () InnerException:

La classe d'entité est tout simplement:

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; } 
    } 
} 

Et les Program.cs TOURNE, est:

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

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

La table de base de données a été effectivement créé très bien, avec deux colonnes, la colonne ID (binaire (16)) et le nom (VARCHAR (255)).

Il semble tout simplement pas comme le Guid ...

Toutes les idées?

+0

juste vérifier si la variable de prise en pension est nulle? –

+0

Merci pour le commentaire, mais non, le repo, comme le test, les objets sont à la fois mis en œuvre et fonctionnant (le repo a facilité la création de la table sans problème). Merci quand même. – Mike

Répondre