NHibernate-将两个相同类型的集合映射到数据库
NHibernate映射问题。 我有一个名为User的实体和一个名为Menu的实体。用户包含两个菜单集合NHibernate-将两个相同类型的集合映射到数据库,nhibernate,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,NHibernate映射问题。 我有一个名为User的实体和一个名为Menu的实体。用户包含两个菜单集合 public class User { public List<Menu> History {get; set;} public List<Menu> Favourites {get; set;} } public class Menu { public string Name {get; set;} ... } 公共类用户 {
public class User
{
public List<Menu> History {get; set;}
public List<Menu> Favourites {get; set;}
}
public class Menu
{
public string Name {get; set;}
...
}
公共类用户
{
公共列表历史记录{get;set;}
公共列表收藏夹{get;set;}
}
公共类菜单
{
公共字符串名称{get;set;}
...
}
我是否可以在不创建新实体的情况下为用户和菜单生成两个关系表(可能是UserHistory和UserFavorities…),每个表都包含从userid到menuid的映射?是否可以仅使用映射(如果可能,使用FluentNHibernate映射)?还是有更好的方法来完成我在这里要做的事情
谢谢。我会用
public class UserMap : ClassMap<User>
{
References(m => m.History).Column("HistoryId");
References(m => m.Favourites).Column("FavouritesId");
}
公共类用户映射:类映射
{
参考文献(m=>m.History).Column(“HistoryId”);
引用(m=>m.favorites)。列(“favoritesid”);
}
在用户中
以及UserHistory和UserFavorites的子类菜单
public class MenuMap : ClassMap<Menu>
{
public ParentMap()
{
Id(x => x.Id);
Map(x => x.Name);
DiscriminateSubClassesOnColumn("type");
}
}
public class ChildMap : SubclassMap<Child>
{
public ChildMap()
{
Map(x => x.AnotherProperty);
}
}
公共类菜单映射:类映射
{
公共ParentMap()
{
Id(x=>x.Id);
Map(x=>x.Name);
区分子类子列(“类型”);
}
}
公共类ChildMap:子类映射
{
公共儿童地图()
{
Map(x=>x.AnotherProperty);
}
}
您是否尝试在映射中使用两个单独的表:
this.References(x => x.Favorites).Table("Favorites");
this.References(x => x.History).Table("History");
这是相当基本的,这里有很多
public class UserMap()
{
HasManyTomany(m => m.History).Table("UserHistory");
HasManyTomany(m => m.Favourites).Table("Favourites").AsSet();
}
根据上下文,您应该将列表
更改为相应的界面
无序但独特:
(.net4)/ISet
(.net<4)ICollection
- 添加到hasmanytomany
.AsSet()
IList
- 添加到hasmanytomany
,它将自动向中间表添加并维护索引列AsList(“indexcolumnName”)