"Use an autoproperty, not a field." My question then is why hasn't field access been implemented? Is there a theoretical reason for not implementing it or is it a bug or just something that hasn't been implemented yet?
On Mar 14, 12:03 pm, James Gregory <jagregory....@gmail.com> wrote: > The key to what paul said is "private auto properties". Use an autoproperty, > not a field. > private string PasswordHash { get; set; } > > instead of > > private string PasswordHash; > > On Sat, Mar 14, 2009 at 5:59 PM, Nick Gieschen <nickgiesc...@gmail.com>wrote: > > > > > Hey, > > > Not sure what you mean by this. As far as I can tell, Reveal doesn't > > work on fields. I get the same error as Anders. I tried adding > > Access.AsField() for the heck of it as well and it still threw a > > FluentNHibernate.UnknownPropertyException. > > > So, is this a bug? It seems to me Reveal should work on fields as I'd > > guess that would be the most common scenario when using it. > > > Nick > > > On Mar 3, 4:06 am, Paul Batum <paul.ba...@gmail.com> wrote: > > > The current Fluent NHibernate trunk does not support strongly typed > > mapping > > > of fields. I typically use private auto properties rather than private > > > fields to work around this. If you would prefer to use the fields then > > > Reveal is the way to go. > > > > On Tue, Mar 3, 2009 at 7:07 PM, Anders <and...@waglund.net> wrote: > > > > > I just noticed the difference. It has to be a private PROPERTY not a > > > > private FIELD. > > > > > Is this a bug? > > > > > Thanks > > > > Anders > > > > > On Mar 3, 9:04 am, Anders <and...@waglund.net> wrote: > > > > > Sorry, I should have included the exception. My bad. > > > > > > Line 36 in StaticSessionManager is: map.Map > > > > > (User.Expressions.PasswordHash); > > > > > > Unable to cast object of type 'System.Reflection.RtFieldInfo' to type > > > > > 'System.Reflection.PropertyInfo'. > > > > > at FluentNHibernate.Utils.ReflectionHelper.GetProperty[MODEL] > > > > > (Expression`1 expression) in d:\Builds\FluentNH\src\FluentNHibernate > > > > > \Utils\ReflectionHelper.cs:line 33 > > > > > at FluentNHibernate.AutoMap.AutoMap`1.Map(Expression`1 expression) > > > > > in d:\Builds\FluentNH\src\FluentNHibernate\AutoMap\AutoMap.cs:line 40 > > > > > at Procentas.Web.StaticSessionManager.<.cctor>b__2(AutoMap`1 map) > > > > > in ....\StaticSessionManager.cs:line 36 > > > > > at > > > FluentNHibernate.AutoMap.AutoPersistenceModel.ForTypesThatDeriveFrom[T] > > > > > (Action`1 populateMap) in d:\Builds\FluentNH\src\FluentNHibernate > > > > > \AutoMap\AutoPersistenceModel.cs:line 225 > > > > > at Procentas.Web.StaticSessionManager.<.cctor>b__1 > > > > > (MappingConfiguration m) in ....\StaticSessionManager.cs:line 30 > > > > > at FluentNHibernate.Cfg.FluentConfiguration.Mappings(Action`1 > > > > > mappings) in d:\Builds\FluentNH\src\FluentNHibernate\Cfg > > > > > \FluentConfiguration.cs:line 69 > > > > > at Procentas.Web.StaticSessionManager..cctor() in .... > > > > > \StaticSessionManager.cs:line 49 > > > > > > /Anders > > > > > > On Mar 3, 2:55 am, Paul Batum <paul.ba...@gmail.com> wrote: > > > > > > > Anders, > > > > > > > The first approach works, its my preferred solution as I really > > really > > > > hate > > > > > > magic strings. You never explained what your problem was. Are you > > > > getting a > > > > > > compilation error? runtime error? > > > > > > > Paul Batum > > > > > > > On Tue, Mar 3, 2009 at 12:24 AM, Anders <and...@waglund.net> > > wrote: > > > > > > > > I resolved this issue by converting my fields to private > > properties > > > > > > > and using the Reveal.Property method. > > > > > > > > private string PasswordHash { get; set; } > > > > > > > private string _PasswordSalt = Guid.NewGuid().ToString(); > > > > > > > private string PasswordSalt > > > > > > > { > > > > > > > get { return _PasswordSalt; } > > > > > > > set { _PasswordSalt = value; } > > > > > > > } > > > > > > > > AutoPersistenceModel.MapEntitiesFromAssemblyOf<IEntity>() > > > > > > > .Where(type => type.GetInterface(typeof(IEntity).Name) == > > > > typeof > > > > > > > (IEntity)) > > > > > > > .ForTypesThatDeriveFrom<User>(map => > > > > > > > { > > > > > > > map.Map(Reveal.Property<User>("PasswordHash")); > > > > > > > map.Map(Reveal.Property<User>("PasswordSalt")); > > > > > > > })) > > > > > > > > /Anders > > > > > > > > On Feb 26, 3:01 pm, Anders <and...@waglund.net> wrote: > > > > > > > > Hi > > > > > > > > > I'm trying to use the first option specified athttp:// > > > > > > > wiki.fluentnhibernate.org/show/StandardMappingPrivateProperties > > > > > > > > together with auto mapping and ForTypesThatDeriveFrom. > > > > > > > > > Is this not supported? > > > > > > > > > Sample code: > > > > > > > > AutoPersistenceModel.MapEntitiesFromAssemblyOf<IEntity>() > > > > > > > > .Where(type => type.GetInterface(typeof(IEntity).Name) == > > > > > > > > typeof(IEntity)) > > > > > > > > .ForTypesThatDeriveFrom<User>(map => > > > { > > > > > > > > map.Map(User.Expressions.PasswordHash); > > > > > > > > map.Map(User.Expressions.PasswordSalt); > > > })) > > > > > > > > > public class User : IEntity > > > > > > > > { > > > > > > > > public virtual int Id { get; set; } > > > > > > > > > public virtual string UserName { get; set; } > > > > > > > > > private string _PasswordHash; > > > > > > > > private string _PasswordSalt = > > > > Guid.NewGuid().ToString(); > > > > > > > > > public virtual void SetPassword(string > > password) > > > > > > > > { > > > > > > > > _PasswordHash = Hasher.Hash(password, > > > > > > > _PasswordSalt); > > > > > > > > } > > > > > > > > > public virtual bool IsPasswordCorrect(string > > > > password) > > > > > > > > { > > > > > > > > return Hasher.Hash(password, > > _PasswordSalt) > > > > == > > > > > > > _PasswordHash; > > > > > > > > } > > > > > > > > > public static class Expressions > > > > > > > > { > > > > > > > > public static readonly > > > > > > > > System.Linq.Expressions.Expression<Func<User, object>> > > PasswordHash > > > > = > > > > > > > > x => x._PasswordHash; > > > > > > > > public static readonly > > > > > > > > System.Linq.Expressions.Expression<Func<User, object>> > > PasswordSalt > > > > = > > > > > > > > x => x._PasswordSalt; > > > > > > > > } > > > > > > > > } > > > > > > > > > How are you supposed to do this using fluent nhibernate? > > > > > > > > > Thanks > > > > > > > > Anders --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---