3

Hibernate マッピングの質問。User というエンティティと Menu というエンティティがあります。ユーザーには、メニューの 2 つのコレクションが含まれています。

public class User 
{
    public List<Menu> History {get; set;}
    public List<Menu> Favourites {get; set;}
}

public class Menu
{
    public string Name {get; set;}
    ...
}

とにかく、新しいエンティティを作成せずに、User と Menu (おそらく UserHistory と UserFavourites) の 2 つの関係テーブルを生成し、それぞれに UserIds から MenuIds へのマッピングが含まれていますか? マッピングのみで実行できますか (可能であれば FluentNHibernate マッピング)? または、私がここでやろうとしていることを行うためのより良い方法はありますか?

ありがとうございました。

4

3 に答える 3

2

これはかなり基本的なものです。

public class UserMap()
{
    HasManyTomany(m => m.History).Table("UserHistory");
    HasManyTomany(m => m.Favourites).Table("Favourites").AsSet();
}

コンテキストに応じてList<Menu>、適切なインターフェイスに変更する必要があります

順序付けられていないが一意:

  • ISet<Menu>(.net4) / ICollection<Menu>(.net < 4)
  • hasmanytomany に追加.AsSet()

追加順:

  • IList<Menu>
  • AsList("indexcolumnName")中間テーブルにインデックス列を自動的に追加して維持するhasmanytomanyに追加します。
于 2012-07-16T09:37:39.107 に答える
2

私は使うだろう

public class UserMap : ClassMap<User>
{
     References(m => m.History).Column("HistoryId");
     References(m => m.Favourites).Column("FavouritesId");   
}

ユーザーで

UserHistory と UserFavourites のサブクラス Menu。

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);
  }
}
于 2012-01-10T09:50:09.943 に答える
-1

マッピングで 2 つの別々のテーブルを使用しようとしましたか:

this.References(x => x.Favorites).Table("Favorites");
this.References(x => x.History).Table("History");
于 2012-01-10T16:12:47.907 に答える