I've never tried user a float like a PrimaryKey and really I don't like it. 
Can you try to do this change to see if it works?

        [PrimaryKey(PrimaryKeyType.Native)]
        public long Id { get; set; }

        [Property]
        public float Nms { get; set; }



El sábado, 16 de febrero de 2013 03:55:51 UTC, Neil Clayton escribió:
>
> I've setup a simple solution with separate assembly (not client profile) 
> for the model.  The model in question is (i've included only one class for 
> brevity - there are two other very simple objects):
>
>     [ActiveRecord("NmToKms")]
>     public class NmToKms : ActiveRecordBase<NmToKms>
>     {
>
>         [PrimaryKey(PrimaryKeyType.Assigned, "nm")]
>         public float Nms { get; set; }
>
>         [Property("km")]
>         public float Kms { get; set; }
>
>         public NmToKms(float nms, float kms)
>         {
>             this.Nms = nms;
>             this.Kms = kms;
>         }
>     }
>
>
>
> The main WinForm app initializes like so:
>
>         public Form1()
>         {
>             InitializeComponent();
>             IConfigurationSource source = 
> System.Configuration.ConfigurationManager.GetSection("activerecord") as 
> IConfigurationSource;
>             Assembly asm = Assembly.Load("WFTModels");
>             ActiveRecordStarter.Initialize(asm, source);
>
>             log4net.Config.XmlConfigurator.Configure();
>         }
>
>
> I have a simple button handler to dump/recreate the DB (which is MySQL5.6):
>
>         private void recreateDB_Click(object sender, EventArgs e)
>         {
>                 ActiveRecordStarter.DropSchema();
>                 ActiveRecordStarter.CreateSchema();
>
>
> And this works. So I'm certain connection to the DB is OK. I'm getting the 
> three tables I expect to see generated.
> However; when I try to create and save a new object, I get an exception. 
> The code in question is this:
>
>                 NmToKms nm = new NmToKms(10.00f, 14.50f);
>                 nm.Create();
>
> And the exception is below. 
> Any ideas?  I also tried saving a simple object that didn't make use of 
> the 'Single' type, just Strings. The exception is virtually identical. I'm 
> a bit lost as to what could be going on here.  Pointers? Tips?
>
> Thanks in advance,
> Neil
> --
>
> Exception upon Save:
>
> NHibernate.MappingException was unhandled
>   Message=Bad identifier type: Single
>   Source=NHibernate
>   StackTrace:
>        at 
> NHibernate.Engine.UnsavedValueFactory.GetUnsavedIdentifierValue(String 
> unsavedValue, IGetter identifierGetter, IType identifierType, 
> ConstructorInfo constructor)
>        at 
> NHibernate.Tuple.PropertyFactory.BuildIdentifierProperty(PersistentClass 
> mappedEntity, IIdentifierGenerator generator)
>        at NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass 
> persistentClass, ISessionFactoryImplementor sessionFactory)
>        at 
> NHibernate.Persister.Entity.AbstractEntityPersister..ctor(PersistentClass 
> persistentClass, ICacheConcurrencyStrategy cache, 
> ISessionFactoryImplementor factory)
>        at 
> NHibernate.Persister.Entity.SingleTableEntityPersister..ctor(PersistentClass 
> persistentClass, ICacheConcurrencyStrategy cache, 
> ISessionFactoryImplementor factory, IMapping mapping)
>        at 
> NHibernate.Persister.PersisterFactory.CreateClassPersister(PersistentClass 
> model, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, 
> IMapping cfg)
>        at NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, 
> IMapping mapping, Settings settings, EventListeners listeners)
>        at NHibernate.Cfg.Configuration.BuildSessionFactory()
>        at 
> Castle.ActiveRecord.Framework.SessionFactoryHolder.GetSessionFactory(Type 
> type) in 
> c:\TeamCity\buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord\Framework\SessionFactoryHolder.cs:line
>  
> 135
>        at 
> Castle.ActiveRecord.Framework.SessionFactoryHolder.CreateSession(Type type) 
> in 
> c:\TeamCity\buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord\Framework\SessionFactoryHolder.cs:line
>  
> 185
>        at Castle.ActiveRecord.ActiveRecordBase.InternalCreate(Object 
> instance, Boolean flush) in 
> c:\TeamCity\buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord\Framework\ActiveRecordBase.cs:line
>  
> 123
>        at Castle.ActiveRecord.ActiveRecordBase.Create(Object instance) in 
> c:\TeamCity\buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord\Framework\ActiveRecordBase.cs:line
>  
> 100
>        at Castle.ActiveRecord.ActiveRecordBase.Create() in 
> c:\TeamCity\buildAgent\work\e41ee5ead2eba140\src\Castle.ActiveRecord\Framework\ActiveRecordBase.cs:line
>  
> 1607
>        at WinFormCastleAR.Form1.recreateDB_Click(Object sender, EventArgs 
> e) in C:\Users\neil\documents\visual studio 
> 2010\Projects\WinFormCastleAR\WinFormCastleAR\Form1.cs:line 42
>        at System.Windows.Forms.Control.OnClick(EventArgs e)
>        at System.Windows.Forms.Button.OnClick(EventArgs e)
>        at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
>        at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons 
> button, Int32 clicks)
>        at System.Windows.Forms.Control.WndProc(Message& m)
>        at System.Windows.Forms.ButtonBase.WndProc(Message& m)
>        at System.Windows.Forms.Button.WndProc(Message& m)
>        at 
> System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
>        at 
> System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
>        at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr 
> hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
>        at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& 
> msg)
>        at 
> System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr
>  
> dwComponentID, Int32 reason, Int32 pvLoopData)
>        at 
> System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 
> reason, ApplicationContext context)
>        at 
> System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, 
> ApplicationContext context)
>        at System.Windows.Forms.Application.Run(Form mainForm)
>        at WinFormCastleAR.Program.Main() in c:\Users\neil\Documents\Visual 
> Studio 2010\Projects\WinFormCastleAR\WinFormCastleAR\Program.cs:line 18
>        at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, 
> String[] args)
>        at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence 
> assemblySecurity, String[] args)
>        at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>        at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
>        at System.Threading.ExecutionContext.Run(ExecutionContext 
> executionContext, ContextCallback callback, Object state, Boolean 
> ignoreSyncCtx)
>        at System.Threading.ExecutionContext.Run(ExecutionContext 
> executionContext, ContextCallback callback, Object state)
>        at System.Threading.ThreadHelper.ThreadStart()
>   InnerException: System.InvalidCastException
>        Message=Unable to cast object of type 'NHibernate.Type.SingleType' 
> to type 'NHibernate.Type.IIdentifierType'.
>        Source=NHibernate
>        StackTrace:
>             at 
> NHibernate.Engine.UnsavedValueFactory.GetUnsavedIdentifierValue(String 
> unsavedValue, IGetter identifierGetter, IType identifierType, 
> ConstructorInfo constructor)
>        InnerException: 
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/castle-project-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to