Sounds like the property is not being mapped to the custom type. To check that 
you can output your hbm (XML) mapping files. If you don't know how to do that 
Google will tell you.



On Thursday, September 15, 2011 at 1:59 PM, Influently NHiberater wrote:

> 
> 
> On Wednesday, September 14, 2011 3:44:07 PM UTC-4, Tim Scott wrote:
> > I didn't notice that CharBooleanType is abstract. There's TrueFalseType and 
> > YesNo type, neither of which are what you need. Two ideas:
> > One of the answers to this post says you can do it with query substitutions 
> > alone. You might try that. You probably want to set query substitutions in 
> > any case.
> > http://stackoverflow.com/questions/7404991/fluentnhibernate-how-to-map-database-char-to-c-bool
> > Otherwise, you can do it for sure with a custom IUserType:
> > http://lostechies.com/rayhouston/2008/03/23/mapping-strings-to-booleans-using-nhibernate-s-iusertype/
> > Copy the sample code and just change the NullSafeGet and NullSafeSet to the 
> > behavior you want. Then map your custom type in FNH (instead of 
> > CharBooleanType).
> 
> I followed the example at lostechies.com (http://lostechies.com), and this is 
> what I have for NullSafeGet and NullSafeSet:
> 
>  public object NullSafeGet(Idr dr, string[] names, object owner) {
>  var obj = NHibernateUtil.String.NullSafeGet(dr, names[0]);
>  if (String.IsNullOrWhiteSpace(Convert.ToString(obj))) {
>  return null;
>  }
> 
>  if (Convert.ToString(obj) != "1" && Convert.ToString(obj) != "0") {
>  throw new Exception("Expected data to be '1' or '0', but was " + obj);
>  }
> 
>  return Convert.ToString(obj) == "1";
>  }
> 
>  public void NullSafeSet(IDbCommand dbCommand, object value, int index) {
>  if (value == null) {
>  ((IDataParameter)dbCommand.Parameters[index]).Value = DBNull.Value;
>  }
>  else {
>  var yes = (bool)value;
>  ((IDataParameter)dbCommand.Parameters[index]).Value = yes ? "1" : "0";
>  }
>  }
> 
> Then in my Mappings.cs, I have
> 
> Map(x => x.IsInactive).Column("inactive").CustomType<CustomBooleanType>();
> 
> No build error, but at run time, I get this:
> 
> System.InvalidCastException : Unable to cast object of type 'System.Boolean' 
> to type 'MyProject.Mappings.CustomBooleanType'.
> 
> So, what am I missing? Thanks.
> 
> 
> 
> 
> > On Wednesday, September 14, 2011 at 1:43 PM, Influently NHiberater wrote:
> > > 
> > > On Wednesday, September 14, 2011 2:26:13 PM UTC-4, Influently NHiberater 
> > > wrote: 
> > > > 
> > > > On Wednesday, September 14, 2011 1:55:39 PM UTC-4, Tim Scott wrote: 
> > > > > Try this: 
> > > > > Map(x=>x.IsActive).Column("is_active").CustomType<CharBooleanType>() 
> > > > > -- 
> > > > > Tim Scott
> > > > > Lunaverse Software 
> > > 
> > > 
> > > OK, just found that CharBooleanType is under NHibernate.Type. So, I tried 
> > > like what you said:
> > > 
> > > Map(x => 
> > > x.IsActive).Column("is_active").CustomType<NHibernate.Type.CharBooleanType>();
> > > 
> > > No build error, but at compile time, I got this:
> > > 
> > > An invalid or incomplete configuration was used while creating a 
> > > SessionFactory. Check PotentialReasons collection, and InnerException for 
> > > more detail.
> > > 
> > > ----> FluentNHibernate.Cfg.FluentConfigurationException : An invalid or 
> > > incomplete configuration was used while creating a SessionFactory. Check 
> > > PotentialReasons collection, and InnerException for more detail. 
> > > 
> > > ----> NHibernate.MappingException : Could not compile the mapping 
> > > document: (XmlDocument)
> > > ----> NHibernate.MappingException : Could not instantiate IType 
> > > CharBooleanType: System.MissingMethodException: Cannot create an abstract 
> > > class. 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > -- 
> > > You received this message because you are subscribed to the Google Groups 
> > > "Fluent NHibernate" group.
> > > To view this discussion on the web visit 
> > > https://groups.google.com/d/msg/fluent-nhibernate/-/f9yCrRQed_YJ.
> > > To post to this group, send email to [email protected] 
> > > (mailto:[email protected]).
> > > To unsubscribe from this group, send email to 
> > > [email protected] 
> > > (mailto:[email protected]).
> > > For more options, visit this group at 
> > > http://groups.google.com/group/fluent-nhibernate?hl=en.
>  -- 
>  You received this message because you are subscribed to the Google Groups 
> "Fluent NHibernate" group.
>  To view this discussion on the web visit 
> https://groups.google.com/d/msg/fluent-nhibernate/-/q9Nwc_PAsEAJ.
>  To post to this group, send email to [email protected] 
> (mailto:[email protected]).
>  To unsubscribe from this group, send email to 
> [email protected] 
> (mailto:[email protected]).
>  For more options, visit this group at 
> http://groups.google.com/group/fluent-nhibernate?hl=en.


-- 
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" 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/fluent-nhibernate?hl=en.

Reply via email to