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>

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