Hello.

I have a very simple AR model like:
<code>
[ActiveRecord]
public class PolicyType : ActiveRecordValidationBase<PolicyType>
 {
        [PrimaryKey(Generator = PrimaryKeyType.Assigned),
ValidateNonEmpty]
        public virtual long? Id { get; set; }

        [Property]
        public virtual string Code { get; set; }

        [Version("Version",UnsavedValue = "null")]
        public virtual int? Version { get; set; }
    }
</code>


creating a new instance without assigning the Id, I would expect the
ValidateNonEmpty on the Id to be triggered first before the AR tries
to persist in the DB.

Unfortunately, this is not happening.
No matter whether I call myObject.Create() or myObject.Save(), I get
the very same error below.
Is this a bug or am I doing something wrong?

Thanks.

<code>
Castle.ActiveRecord.Framework.ActiveRecordException : Could not
perform Create for PolicyType
  ----> NHibernate.Id.IdentifierGenerationException : ids for this
class must be manually assigned before calling save():
ARModel.PolicyType
at Castle.ActiveRecord.ActiveRecordBase.InternalCreate(Object
instance, Boolean flush)
at Castle.ActiveRecord.ActiveRecordBase.Create()
at ARWebApp.Controllers.PolicyTypeController.Create(PolicyType pt) in
PolicyTypeController.cs: line 43
at
ARWebAppTest.Controller.PolicyTypeControllerTest.CreatePolicyTypeTest()
in PolicyTypeControllerTest.cs: line 24
--IdentifierGenerationException
at NHibernate.Id.Assigned.Generate(ISessionImplementor session, Object
obj)
at
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object
entity, String entityName, Object anything, IEventSource source,
Boolean requiresImmediateIdAccess)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent
event)
at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.Save(Object obj)
at Castle.ActiveRecord.ActiveRecordBase.InternalCreate(Object
instance, Boolean flush)
</code>

-- 
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.

Reply via email to