Hi,
I got the scenario where one can select services offered by a company (from
a fixed list of services). Which is a normal many-to-many relationship.
However, I now realized I also need to store data specific to the
company-service relationship, so one can store a "comment" regarding that
specific company's offering of each service.
So my "many-to-many" table should end up having a "CompanyId", "ServiceId"
as well as a "Comments" column.
My domain model currently is "Company" (Id, CompanyName and Services [list
of services]) and my "Service" object (Id, ServiceName and Companies [list
of Companies])
Brain-dead, so just cannot think where I should be implementing the
"Comments".
For what it might help, here is some code (I'm using mapping by code)
Please note I had to take out some members and rename things a bit
(confidentiallity), so might have made a mistake or two.
However this works (though critic are welcome, I'm no expert). It's just I
need to "add" something to make "Comments" work.
// Domain models
public class Company
{
public Company()
{
CompanyServices = new List<CompanyService>();
}
public virtual int Id { get; set; }
public virtual string CompanyName { get; set; }
public virtual IList<CompanyService> CompanyServices { get; protected
set; }
}
public class CompanyService
{
public CompanyService()
{
Companies = new List<Company>();
}
public virutal int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Company> Companies { get; protected set; }
}
// nHibernate Mappings
// Defines the CompanyName side of the many-to-many relationship with
CompanyService
mapper.Class<Company>(map =>
map.Bag(x => x.CompanyServices,
bag =>
{
bag.Key(key =>
key.Column("CompanyFk"));
bag.Table("Companies_Services");
bag.Cascade(Cascade.None);
},
collectionRelation =>
collectionRelation.ManyToMany(m =>
m.Column("CompanyServiceFk"))));
// Defines the CompanyService side of the many-to-many relationship with
CompanyName
mapper.Class<CompanyService>(map =>
map.Bag(x => x.Companies,
bag =>
{
bag.Key(key =>
key.Column("CompanyServiceFk"));
bag.Table("Companies_Services");
bag.Cascade(Cascade.None);
},
collectionRelation =>
collectionRelation.ManyToMany(m =>
m.Column("CompanyFk"))));
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/nhusers/-/zGon5wwge-YJ.
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.