you can register assemblies and types after the initializarion: ActiveRecordStarter.RegisterAssemblies(typeAssembly);
works fine. (I can create a table but can't save the object). Can you please give me some sample code to see what you've put in the AssemblyResolve event handler? On Jun 10, 12:32 pm, Nicholas Kilian <[email protected]> wrote: > How is AR/NH meant to know about your type if it's not part of the > initialisation? > > The problem is with NH and how it loads assemblies during configuration, > which is why you should handle the AssemblyResolve event and return your > runtime compiled assembly. > > -----Original Message----- > From: [email protected] > > [mailto:[email protected]] On Behalf Of Regis Dubois > Sent: 10 June 2011 01:30 PM > To: Castle Project Users > Subject: Re: Problem saving an object created dynamically with reflection > > Hi and thanks Nicholas, > > I am not sure I understand the solution you propose? > Plus the entire purpose of the exercise for me, is to dynamically create > assembly AFTER the active record initialization and to register it after > it's been compiled on the fly. > > Note that I have tried to explicitly add the class to the solution in order > to test the following code: > > ActiveRecordStarter.RegisterTypes(typeof(iTradeType1)); > iTradeType1 it = new iTradeType1(); > it.Identifier = "DummyId"; > it.Col2 = DateTime.Now; > it.Save(); > > and it works. > > So it's definitely something to do with AC or NH beeing unhappy with the > assembly I have compiled. I am trying to check the assembly manifest, > without much luck. > > Any other suggestions are welcomed. > > On Jun 10, 11:24 am, Nicholas Kilian <[email protected]> > wrote: > > I actually had this same problem the other day, eventually found an > > obscure reference to the actual error in an NH bug report. > > > You need to handle the AppDomain.CurrentDomain.AssemblyResolve event > > and return your compiled assembly - do this before initialising > ActiveRecord. > > > -----Original Message----- > > From: [email protected] > > > [mailto:[email protected]] On Behalf Of Regis > > Dubois > > Sent: 10 June 2011 12:00 PM > > To: Castle Project Users > > Subject: Problem saving an object created dynamically with reflection > > > Hi, I am trying to get the following to work without much success: > > > This class is read from file and compiled in memory: > > > using System; > > using Castle.ActiveRecord; > > using iTradeStorage.ValueObjects; > > namespace iTradeStorage.ValueObjects > > { > > [ActiveRecord] > > public class iTradeType1 : ActiveRecordBase > > { > > [PrimaryKey] > > public string Identifier { get; set; } > > [Property] > > public String Col1 { get; set; } > > [Property] > > public DateTime Col2 { get; set; } > > } > > } > > > A table existe in the db that matches this class. (created using > > UpdateSchema()) > > > I then try to save an object, the following way: > > > Type type = _typeManager.GetType(typeVo); //return the > > type > > iTradeType1 > > object theObject = Activator.CreateInstance(type); > > PropertyInfo[] pis = type.GetProperties(); > > Dictionary<string, PropertyInfo> propertyInfosPerName = > > new Dictionary<string, PropertyInfo>(); > > foreach (PropertyInfo propertyInfo in pis) > > { > > //PropertyAttributes pas = propertyInfo.Attributes; > > propertyInfosPerName.Add(propertyInfo.Name, > > propertyInfo); > > } > > string id = "thisisatest"; > > propertyInfosPerName["Identifier"].SetValue(theObject, id, > > null); > > propertyInfosPerName["Col1"].SetValue(theObject, > > "col1ValTest", null); > > propertyInfosPerName["Col2"].SetValue(theObject, > > DateTime.Now, null); > > > ((ActiveRecordBase)theObject).Save(); > > > and get the following exception: > > > {"Could not perform Save for iTradeType1"} Inner ex: {"Exception > > occurred getter of > > Rbs.Gbm.Sgi.iTradeStorage.ValueObjects.iTradeType1.Identifier"} > > Innder ex: {"Object does not match target type."} > > > at Castle.ActiveRecord.ActiveRecordBase.InternalSave(Object > > instance, Boolean flush) in c:\TeamCity\buildAgent\work > > \e41ee5ead2eba140\src\Castle.ActiveRecord\Framework > > \ActiveRecordBase.cs:line 601 > > at Castle.ActiveRecord.ActiveRecordBase.Save(Object instance) in c: > > \TeamCity\buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord > > \Framework\ActiveRecordBase.cs:line 510 > > at Castle.ActiveRecord.ActiveRecordBase.Save() in c:\TeamCity > > \buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord\Framework > > \ActiveRecordBase.cs:line 1547 > > at > > Rbs.Gbm.Sgi.iTradeStorage.ObjectManagement.ObjectManager.StoreObject(S > > tring > > objectXml) in > > C:\Development\Rbs.Gbm.Sgi\iTradeStorage\ObjectManagement > > \ObjectManager.cs:line 58 > > at ObjectManagementTests.ObjectManagerTests.StoreObjectTest() in C: > > \Development\Rbs.Gbm.Sgi\iTradeStorage\Tests\ObjectManagementTests > > \ObjectManagerTests.cs:line 78 > > > Can somebody kindly help? > > > I'd like to try and debug the active record source code but can't seem > > to find it. Where canI get ahold of it? > > > Thanks. > > > -- > > You received this message because you are subscribed to the Google > > Groups "Castle Project Users" group. > > To post to this group, send email to > [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > athttp://groups.google.com/group/castle-project-users?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Users" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group > athttp://groups.google.com/group/castle-project-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en.
