In practice
map.Column(prop.ToColumnName() + "Id");

On Tue, Apr 19, 2011 at 10:34 AM, Fabio Maulo <[email protected]> wrote:

> Since those event-handler are implemented by you I can say that you have a
> clear bug that produce duplicated columns names.
>
>
> On Tue, Apr 19, 2011 at 9:54 AM, Michael DELVA <[email protected]>wrote:
>
>> Hello,
>>
>> Given these 2 entities:
>>
>> public class Match : BaseEntity
>> {
>> private Team homeTeam;
>> private Team roadTeam;
>>
>> public Match()
>>  {
>>  }
>>
>> public Team HomeTeam
>>  {
>> get { return homeTeam; }
>> set
>> {
>>  if (homeTeam == value)
>> return;
>>
>> if (homeTeam != null)
>>  homeTeam.RemoveFromMatch(this, true);
>>
>> homeTeam = value;
>>
>> if (value == null)
>>  return;
>>
>> value.AddToMatch(this, true);
>> }
>>  }
>>
>> public Team RoadTeam
>> {
>> get { return roadTeam; }
>>  set
>> {
>> if (roadTeam == value)
>> return;
>>
>> if (roadTeam != null)
>> roadTeam.RemoveFromMatch(this, false);
>>
>> roadTeam = value;
>>
>> if (value == null)
>> return;
>>
>> value.AddToMatch(this, false);
>>  }
>> }
>> }
>>
>> public class Team : BaseEntity
>> {
>> public Team()
>>  {
>> }
>> }
>>
>> And this mapping configuration:
>>
>> var mapper = new ConventionModelMapper();
>>
>> var baseEntityType = typeof(BaseEntity);
>>
>> mapper.IsEntity((t, declared) => baseEntityType.IsAssignableFrom(t) &&
>> baseEntityType != t && !t.IsInterface);
>> mapper.IsRootEntity((t, declared) => baseEntityType.Equals(t.BaseType));
>>
>> mapper.BeforeMapManyToOne += (insp, prop, map) =>
>> map.Column(prop.LocalMember.GetPropertyOrFieldType().Name + "Id");
>> //mapper.BeforeMapManyToOne += (insp, prop, map) =>
>> map.Cascade(Cascade.Persist);
>> mapper.BeforeMapManyToOne += (insp, prop, map) => map.NotNullable(true);
>> //mapper.BeforeMapManyToOne += (insp, prop, map) =>
>> map.Access(Accessor.Field);
>>
>> mapper.BeforeMapSet += (insp, prop, map) => map.Key(km =>
>> km.Column(prop.GetContainerEntity(insp).Name + "Id"));
>> mapper.BeforeMapSet += (insp, prop, map) => map.Cascade(Cascade.All |
>> Cascade.DeleteOrphans);
>> mapper.BeforeMapSet += (insp, prop, map) => map.Inverse(true);
>>
>> mapper.BeforeMapProperty += (insp, prop, map) => map.NotNullable(true);
>>
>> mapper.BeforeMapClass += (i, t, cm) => cm.Id(map =>
>> {
>> map.Column(t.Name + "Id");
>> map.Generator(Generators.Native);
>> });
>>
>> NH generates this mapping:
>>
>> <class name="Match">
>> <id name="Id" access="nosetter.camelcase" column="MatchId" type="Int32">
>>  <generator class="native" />
>> </id>
>> <many-to-one name="HomeTeam" column="TeamId" not-null="true" />
>>  <many-to-one name="RoadTeam" column="TeamId" not-null="true" />
>> </class>
>>
>> I expected the mapping to use HomeTeamId and RoadTeamId as column names.
>>
>> This can be countered with:
>>
>> mapper.Class<Match>(cm =>
>> {
>> cm.ManyToOne(m => m.HomeTeam, pm => pm.Column("HomeTeamId"));
>>  cm.ManyToOne(m => m.RoadTeam, pm => pm.Column("RoadTeamId"));
>> });
>>
>> I don't know if this a bug, that's why I ask :)
>>
>> Thanks in advance
>>
>> Mike
>>
>> --
>> 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

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