With this:

var mapper = new ModelMapper();
mapper.Class<Activity>(c =>
            {
 c.DiscriminatorValue(0);
 c.Discriminator(map =>
                 {
                map.Column("DISCRIMINATOR_TYPE");
map.NotNullable(true);
map.Column(colMap => colMap.Index("IDXActivityEntityType"));
                 });
 c.Id(x => x.Id, map => map.Generator(Generators.Guid));
 c.Property(x => x.Title);
             });
mapper.Subclass<FormActivity>(c =>
                              {
c.DiscriminatorValue((int)ActivityType.Form);
                             });
The mapping is
  <class name="Activity" discriminator-value="0">
    <id name="Id" type="Guid">
      <generator class="guid" />
    </id>
    <discriminator type="Int32">
      <column name="DISCRIMINATOR_TYPE" not-null="true"
index="IDXActivityEntityType" />
    </discriminator>
    <property name="Title" />
  </class>
  <subclass name="FormActivity" discriminator-value="1" extends="Activity" />

On Wed, May 4, 2011 at 9:22 AM, Fabio Maulo <[email protected]> wrote:

> With this
> c.Discriminator(map =>
>               {
>                 map.Column("DISCRIMINATOR_TYPE");
> map.Type(typeof(int));
>  map.NotNullable(true);
>                  });
>
> The exception should be this:
>
> System.ArgumentOutOfRangeException : Expected type implementing 
> IDiscriminatorType
>
> On Wed, May 4, 2011 at 9:19 AM, Fabio Maulo <[email protected]> wrote:
>
>> Same domain
>> var mapper = new ModelMapper();
>> mapper.Class<Activity>(c =>
>>                        {
>>  c.DiscriminatorValue(0);
>>  c.Discriminator(map =>
>>                  {
>>                  map.Column("DISCRIMINATOR_TYPE");
>>  map.Type(NHibernateUtil.Int32);
>> map.NotNullable(true);
>>                  });
>>  c.Id(x => x.Id, map => map.Generator(Generators.Guid));
>>  c.Property(x => x.Title);
>>                        });
>> mapper.Subclass<FormActivity>(c =>
>>                               {
>> c.DiscriminatorValue((int)ActivityType.Form);
>>                               });
>>
>> Mapping:
>> <class name="Activity" discriminator-value="0">
>>     <id name="Id" type="Guid">
>>       <generator class="guid" />
>>     </id>
>>     <discriminator column="DISCRIMINATOR_TYPE" type="Int32" />
>>
>>     <property name="Title" />
>>   </class>
>>
>>   <subclass name="FormActivity" discriminator-value="1" extends="Activity" />
>>
>> On Wed, May 4, 2011 at 9:15 AM, Fabio Maulo <[email protected]> wrote:
>>
>>>  private class Entity
>>> {
>>> public Guid Id { get; set; }
>>>  }
>>> private class Activity: Entity
>>> {
>>>  public string Title { get; set; }
>>> }
>>>
>>> private class FormActivity:Activity
>>>  {
>>>  }
>>>  public enum ActivityType
>>> {
>>> Form = 1,
>>>  Custom = 2,
>>> Email = 3
>>> }
>>>  [Test]
>>> public void WhenMapDiscriminatorValueThenNotThrows()
>>> {
>>>  var mapper = new ModelMapper();
>>> mapper.Class<Activity>(c =>
>>>                        {
>>>  c.DiscriminatorValue(0);
>>>  c.Id(x => x.Id, map => map.Generator(Generators.Guid));
>>>  c.Property(x => x.Title);
>>>                        });
>>> mapper.Subclass<FormActivity>(c =>
>>>                               {
>>> c.DiscriminatorValue((int)ActivityType.Form);
>>>                               });
>>>
>>> Console.WriteLine(mapper.CompileMappingForAllExplicitAddedEntities().AsString());
>>>  }
>>>
>>> Mapping:
>>>   <class name="Activity" discriminator-value="0">
>>>     <id name="Id" type="Guid">
>>>       <generator class="guid" />
>>>     </id>
>>>     <discriminator type="Int32" />
>>>     <property name="Title" />
>>>   </class>
>>>
>>>   <subclass name="FormActivity" discriminator-value="1" extends="Activity" 
>>> />
>>>
>>> Can you send me the same thing I'm sending you but generating the
>>> exception you are seeing ?
>>> Thanks
>>>
>>> On Wed, May 4, 2011 at 8:39 AM, Luka <[email protected]> wrote:
>>>
>>>> public enum ActivityType
>>>> {
>>>>    Form = 1,
>>>>    Custom = 2,
>>>>    Email = 3
>>>> }
>>>>
>>>> I tried to change:
>>>> mapper.Subclass<FormActivity>(map=>map.DiscriminatorValue( 1 )); , but
>>>> with the same error
>>>>
>>>>
>>>> On May 4, 1:23 pm, Fabio Maulo <[email protected]> wrote:
>>>> > what is ActivityType ?
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > On Wed, May 4, 2011 at 8:17 AM, Luka <[email protected]> wrote:
>>>> > > hi, Fabio
>>>> >
>>>> > > I have corrected my scenario like this:
>>>> > > mapper.Class<Activity>(map =>
>>>> > >                                       {
>>>> > >                                        map.Discriminator(dm =>
>>>> > >                                           {
>>>> >
>>>> > > dm.Column("DISCRIMINATOR_TYPE");
>>>> >
>>>> > > dm.Type(typeof(System.Int32));
>>>> > >                                               dm.NotNullable(true);
>>>> > >                                            });
>>>> > >                                       });
>>>> > >
>>>> mapper.Subclass<FormActivity>(map=>map.DiscriminatorValue(ActivityType.Form
>>>> > > ));
>>>> >
>>>> > > Now discriminator is not a Property anymore. But I get same error.
>>>> >
>>>> > > On May 4, 12:59 pm, Fabio Maulo <[email protected]> wrote:
>>>> > > > The discriminator *can't* be a property.
>>>> >
>>>> > > > On Wed, May 4, 2011 at 6:18 AM, Luka <[email protected]> wrote:
>>>> > > > > Hi,
>>>> > > > > I have this scenarion:
>>>> >
>>>> > > > > A table:
>>>> >
>>>> > > > > Activity
>>>> > > > > .Id : Guid
>>>> > > > > .Type: int
>>>> > > > > .Title: nvarchar(20)
>>>> > > > > ...
>>>> >
>>>> > > > > Classes
>>>> > > > > public class Activity: Entity
>>>> > > > > {
>>>> > > > >    public virtual ActivityType Type {get;set;}
>>>> > > > >    public virtual string Title {get;set;}
>>>> > > > > }
>>>> >
>>>> > > > > public class FormActivity: Activity
>>>> > > > > {
>>>> >
>>>> > > > > }
>>>> >
>>>> > > > > and a mapping:
>>>> > > > > mapper.Class<Activity>(map =>
>>>> > > > >                                       {
>>>> >
>>>> > > > > map.Discriminator(dm=>dm.Column("TYPE"));
>>>> > > > >                                       });
>>>> >
>>>> > >
>>>> mapper.Subclass<FormActivity>(map=>map.DiscriminatorValue(ActivityType.Form
>>>> > > ));
>>>> >
>>>> > > > > When building SessionFactory I get Exception
>>>> >
>>>> > > > > System.InvalidOperationException: Sequence contains more than
>>>> one
>>>> > > > > matching element
>>>> > > > > It throws when get on this line:
>>>> >
>>>> > >
>>>> mapper.Subclass<FormActivity>(map=>map.DiscriminatorValue(ActivityType.Form
>>>> > > ));
>>>> >
>>>> > > > > what am I doing wrong?
>>>> >
>>>> > > > > --
>>>> > > > > You received this message because you are subscribed to the
>>>> Google
>>>> > > Groups
>>>> > > > > "nhusers" 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/nhusers?hl=en.
>>>> >
>>>> > > > --
>>>> > > > Fabio Maulo
>>>> >
>>>> > > --
>>>> > > You received this message because you are subscribed to the Google
>>>> Groups
>>>> > > "nhusers" 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/nhusers?hl=en.
>>>> >
>>>> > --
>>>> > Fabio Maulo
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "nhusers" 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/nhusers?hl=en.
>>>>
>>>>
>>>
>>>
>>> --
>>> Fabio Maulo
>>>
>>>
>>
>>
>> --
>> Fabio Maulo
>>
>>
>
>
> --
> Fabio Maulo
>
>


-- 
Fabio Maulo

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

Reply via email to