Interesting, perhaps I'm wrong then. You're still better asking this over at nh-users.
On Thu, Jul 16, 2009 at 10:44 AM, Darko Konrad <[email protected]> wrote: > > Hi James, > > there is no PK generated at all. That was the reason for my post. > Here is the generated SQL: > > create table [SegmentGroup] ( > SegmentGroupId BIGINT IDENTITY NOT NULL, > SegmentGroupName NVARCHAR(255) null, > primary key (SegmentGroupId) > ) > create table SegmentGroupSegments ( > SegmentGroupId BIGINT not null, > SegmentId BIGINT not null > ) > create table [Segment] ( > SegmentId BIGINT IDENTITY NOT NULL, > SegmentName NVARCHAR(255) null, > primary key (SegmentId) > ) > > and later the FKs: > alter table SegmentGroupSegments add constraint FK53B4C5B6C2AAA71A > foreign key (SegmentId) references [Segment] > alter table SegmentGroupSegments add constraint FK53B4C5B67B5AADE7 > foreign key (SegmentGroupId) references [SegmentGroup] > > This is, btw, what happens to ALL of my many-to-many relations. > > thats it. > > regards, > Darko > > > On 16 Jul., 11:05, James Gregory <[email protected]> wrote: > > What do you mean by "there is no PK" when you then say you don't want a > > surrogate key, is there a key or not? > > I'm pretty sure there's always a surrogate key on the many-to-many > tables, > > that's just how NH generates the schema. I've had a look in the XSD and I > > can't see any attributes to specify a unique constraint. You could maybe > use > > the check attribute on your collection, but I'm not sure it's for that > > purpose. > > > > > > > > On Thu, Jul 16, 2009 at 9:06 AM, Darko Konrad <[email protected]> > wrote: > > > > > Hi guys, > > > > > I have a many-to-many relationship which is implemented as > > > bidirectional. > > > > > public class SegmentGroup > > > { > > > public virtual long Id { get; protected set; } > > > public virtual string SegmentGroupName { get; set; } > > > public virtual IList<Segment> Segments { get; set; } > > > } > > > > > and > > > > > public class Segment > > > { > > > public virtual long Id { get; protected set; } > > > public virtual string SegmentName { get; set; } > > > public virtual IList<SegmentGroup> SegmentGroups { get; set; } > > > } > > > > > I am using the automapping feature with the following conventions: > > > > > .... > > > .ForTypesThatDeriveFrom<SegmentGroup>(m1 => m1.HasManyToMany(x => > > > x.Segments) > > > .WithTableName > > > ("SegmentGroupSegments") > > > .Cascade.All() > > > .WithParentKeyColumn > > > ("SegmentGroupId") > > > .WithChildKeyColumn > > > ("SegmentId")) > > > > > .ForTypesThatDeriveFrom<Segment>(m1 => m1.HasManyToMany(x => > > > x.SegmentGroups) > > > .WithTableName > > > ("SegmentGroupSegments") > > > .Cascade.All() > > > .Inverse() > > > .WithParentKeyColumn > > > ("SegmentGroupId") > > > .WithChildKeyColumn > > > ("SegmentId")) > > > .... > > > > > The tables are generated correctly, however there is no PK (combined, > > > don't want a surrogate PK) > > > in the link table. Is that so by design? If yes, how do I at least set > > > UNIQUE constraint on > > > the combination of the 2 FKs? > > > > > Here are the generated hbms: > > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- > > > access=""> > > > <class name="Fintexx.STAR.DataContract.SegmentGroup, > > > Fintexx.STAR.DataContract, Version=1.0.0.0, Culture=neutral, > > > PublicKeyToken=null" table="`SegmentGroup`" xmlns="urn:nhibernate- > > > mapping-2.2"> > > > <id name="Id" type="Int64" column="SegmentGroupId"> > > > <generator class="identity" /> > > > </id> > > > <property name="SegmentGroupName" type="String"> > > > <column name="SegmentGroupName" /> > > > </property> > > > <bag name="Segments" cascade="all" table="SegmentGroupSegments"> > > > <key column="SegmentGroupId" /> > > > <many-to-many column="SegmentId" > > > class="Fintexx.STAR.DataContract.Segment, Fintexx.STAR.DataContract, > > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> > > > </bag> > > > </class> > > > </hibernate-mapping> > > > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- > > > access=""> > > > <class name="Fintexx.STAR.DataContract.Segment, > > > Fintexx.STAR.DataContract, Version=1.0.0.0, Culture=neutral, > > > PublicKeyToken=null" table="`Segment`" xmlns="urn:nhibernate- > > > mapping-2.2"> > > > <id name="Id" type="Int64" column="SegmentId"> > > > <generator class="identity" /> > > > </id> > > > <property name="SegmentName" type="String"> > > > <column name="SegmentName" /> > > > </property> > > > <bag name="SegmentGroups" cascade="all" inverse="true" > > > table="SegmentGroupSegments"> > > > <key column="SegmentId" /> > > > <many-to-many column="SegmentGroupId" > > > class="Fintexx.STAR.DataContract.SegmentGroup, > > > Fintexx.STAR.DataContract, Version=1.0.0.0, Culture=neutral, > > > PublicKeyToken=null" /> > > > </bag> > > > </class> > > > </hibernate-mapping> > > > > > THX, > > > Darko > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
