Fluent nhibernate 多对多关系中表的Fluent NHibernate映射
我正在尝试为如下所示的数据库设置Fluent NHibernate映射:Fluent nhibernate 多对多关系中表的Fluent NHibernate映射,fluent-nhibernate,fluent-nhibernate-mapping,Fluent Nhibernate,Fluent Nhibernate Mapping,我正在尝试为如下所示的数据库设置Fluent NHibernate映射: Campaign Table Id Name Category Table Id Campaign_id Name Customer Table Id Name Phone ... SalesMan Table Id Name Phone ... CustomerSalesManCategory Table Id Customer_id SalesMan_id Category_id CustomerS
Campaign Table
Id
Name
Category Table
Id
Campaign_id
Name
Customer Table
Id
Name
Phone
...
SalesMan Table
Id
Name
Phone
...
CustomerSalesManCategory Table
Id
Customer_id
SalesMan_id
Category_id
CustomerSalesManCategory表的列分别将Customer、SalesMan和Category的主键作为外键
活动与类别之间存在一对多关系
客户与类别之间存在多对多关系
客户与销售人员有多对多关系,但也与类别相关
也就是说:为客户指定了一个特定类别的销售人员,因此CustomerSalesManCategory表中的正确条目应该完美地反映所有3个id的填充情况
使用我目前拥有的映射,条目被插入CustomerSalesManCategory中,Salesor_id或Category_id为空,这对于我提供的映射是正确的
但是,我无法找出让FluentNhibernate正确完成工作的映射。在CustomerSalesManCategory表中的单个entry,位于Save或Update for Customer上
任何帮助都是非常感激的。
以下是我当前的映射:
public class CampaignMap : ClassMap<Campaign>
{
public CampaignMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.CreationDate);
HasMany(x => x.CampaignsCategories).Inverse().Cascade.AllDeleteOrphan();
}
}
public class CategoryMap : ClassMap<Category>
{
public CategoryMap()
{
Id(x => x.Id);
Map(x => x.Extension);
References(x => x.Campaign);
HasManyToMany(x => x.CustomersAssginedInCategory).Inverse().Table("CustomerSalesManCategory");
}
}
public class CustomerMap : ClassMap<Customer>
{
public CustomerMap()
{
Id(x => x.Id);
Map(x => x.CallingName);
Map(x => x.OfficialName);
Map(x => x.Year);
Map(x => x.Description);
HasManyToMany(x => x.CustomerCategories).Table("CustomerSalesManCategory");
HasManyToMany(x => x.CustomerSalesMen).Table("CustomerSalesManCategory");
}
}
public class SalesManMap : ClassMap<SalesMan>
{
public SalesManMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Email);
Map(x => x.Phone);
Map(x => x.Description);
HasManyToMany(x => x.CustomersAssignedTo).Inverse().Table("CustomerSalesManCategory");
}
}
三方关联通常是字典
// in Customer
public IDictionary<SalesMan, Category> asd { get; private set; }
// in CustomerMap
HasManyToMany(x => x.CustomerSalesMen)
.Table("CustomerSalesManCategory")
.AsEntityMap("SalesManId");
Thanx非常感谢您的回复-我使用了Entity Developer工具的免费版本,在它创建的类中,使用了一个中间类。这是CustomerSalesManCategory类。这个类有一个Customer a Category和一个Sales对象要初始化。我从那里继续。