That worked. Thanks, cc
________________________________ From: Hudson Akridge <[email protected]> To: [email protected] Sent: Thursday, July 16, 2009 11:43:25 AM Subject: [fluent-nhib] Re: Discriminator / Subclass Problems Ah. Try <string>? What's the xml that's being output? On Thu, Jul 16, 2009 at 11:40 AM, Corey Coogan <[email protected]> wrote: >>I was worried that this wouldn't work since I'm storing the Enum as >>string in my DB. It didn't work anyway, got the same error. > >>cc > > >>On Jul 16, 11:24 am, Hudson Akridge <[email protected]> wrote: >>> DiscriminateSubClassesOnColum<int> >>> >> On Thu, Jul 16, 2009 at 11:06 AM, Corey Coogan <[email protected]>wrote: > >> >>> >>> >>> >>> >>> > Thanks James. That won't compile. >>> >>> > Argument '2': cannot convert from 'int' to >>> > 'S2sol.Rpo.Core.Domain.User.UserRole' >>> >>> > I'm storing the string value of the enum in my User table. I actually >>> > don't have a table designed yet, so I could make changes to my >>> > mappings if that would help. >>> >>> > On Jul 16, 10:37 am, James Gregory <[email protected]> wrote: >>> > > This shouldn't be necessary, but try explicitly casting your enum to an >>> > int. >>> > > mapping.DiscriminateSubClassesOnColumn<UserRole>("Role", >>> > > (int)UserRole.Teacher) >>> >>> > > On Thu, Jul 16, 2009 at 4:31 PM, Corey Coogan <[email protected]> >>> > wrote: >>> >>> > > > I've searched everywhere and can't find an example that fits this. I >>> > > > really could use some help I keep getting the error: >>> >>> > > > "Could not format discriminator value to SQL string of entity..." >>> >>> > > > I have a User class with an enum property, UserRole, that I want to be >>> > > > my discriminator. >>> >>> > > > public abstract class User >>> > > > { >>> > > > public string Name; >>> > > > public virtual UserRole Role { get; protected set; } >>> > > > } >>> >>> > > > I then have a subclass for each role: >>> >>> > > > public class Teacher : User >>> > > > { >>> > > > public Teacher() >>> > > > { >>> > > > Role = UserRole.Teacher; >>> > > > } >>> >>> > > > } >>> >>> > > > I don't have any property on Teacher referring to Role because I don't >>> > > > need it. This is different from what I've seen in other examples. >>> > > > Here's how I tried to map it on my User mapping: >>> >>> > > > mapping.DiscriminateSubClassesOnColumn<UserRole>("Role", >>> > > > UserRole.Teacher) >>> > > > .SubClass<Teacher>(t => >>> > > > { >>> > > > t.Map(x => x.Role); >>> > > > } >>> > > > ); >>> >>> > > > Here's my mapping output: >>> >>> > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- >>> > > > access=""> >>> > > > <class name="S2sol.Rpo.Core.Domain.User.User, S2sol.Rpo.Core, >>> > > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="Users" >>> > > > xmlns="urn:nhibernate-mapping-2.2" discriminator-value="Teacher"> >>> > > > <id name="Id" type="Int32" unsaved-value="0" column="Id"> >>> > > > <generator class="identity" /> >>> > > > </id> >>> > > > <discriminator column="Role" >>> > > > type="S2sol.Rpo.Core.Domain.User.UserRole, S2sol.Rpo.Core, >>> > > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> >>> > > > <property name="Email" type="String" unique- >>> > > > key="IX_Unique_EmailAddress"> >>> > > > <column name="Email" /> >>> > > > </property> >>> > > > <property name="Role" >>> > > > type="FluentNHibernate.Mapping.GenericEnumMapper`1 >>> > > > [[S2sol.Rpo.Core.Domain.User.UserRole, S2sol.Rpo.Core, >>> > > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], >>> > > > FluentNHibernate, Version=0.1.0.0, Culture=neutral, >>> > > > PublicKeyToken=8aa435e3cb308880"> >>> > > > <column name="Role" /> >>> > > > </property> >>> >>> > > > <property name="Name" type="String"> >>> > > > <column name="Name" /> >>> > > > </property> >>> >>> > > > <subclass name="S2sol.Rpo.Core.Domain.User.Teacher, >>> > > > S2sol.Rpo.Core, Version=1.0.0.0, Culture=neutral, >>> > > > PublicKeyToken=null"> >>> > > > <property name="Role" type="S2sol.Rpo.Core.Domain.User.UserRole, >>> > > > S2sol.Rpo.Core, Version=1.0.0.0, Culture=neutral, >>> > > > PublicKeyToken=null"> >>> > > > <column name="Role" /> >>> > > > </property> >>> > > > </subclass> >>> > > > </class> >>> > > > </hibernate-mapping> >>> >>> -- >> - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/HudsonAkridge > > > -- - Hudson http://www.bestguesstheory.com http://twitter.com/HudsonAkridge --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
