2011-12-28 26 views
0

私は3つのテーブルを持っていますが、それらはとてもシンプルです。ユーザー、投稿、お気に入り。Nhibernate、エンティティクラスを構築するための助けが必要

  User Table: 
      Id: int 
      Name: string 
      -------------------------------- 

      Post Table: 
      Id: int 
      Title: string 
      UserId: int (this is the FK) 
      -------------------------------- 

      Favorite Table: 
      UserId: int 
      PostId: int 
      -------------------------------- 

ユーザーテーブルと投稿テーブルの2つのクラスファイルを作成します。お気に入りのテーブルを追加する方法はわかりません。お気に入りのテーブルでは、お気に入りのブックマークをブックマークすることができます。

  public class User : Entity 
      { 
       public User() { this.Posts = new List<Post>;} 
       public virtual string Name { get; set; } 
       public virtual IList<Post> Posts {get; set;} 
      } 

      public class Post : Entity 
      { 
       public Post() {} 
       public virtual string Title { get; set; } 
       public virtual User User { get; set; } 
      } 
+0

あなたが探しているのはおそらく多対多の関係です。 – alexn

+0

あなたは多かれ少なかれ関係です。ただし、ユーザーから投稿までは1対多の関係であり、1つのユーザーは複数の投稿を持ち、1つの投稿は1つのユーザーに属していなければなりません。お気に入りは、ポストとユーザーの間の多対多です。私はここにこだわって、続ける方法を知らない。 – qinking126

答えて

0

あなたは多かれ少なかれ多くの関係を持っています。お気に入りテーブルは、ユーザーと投稿の関係テーブルです。

public class Favorite : Entity 
{ 
    public virtual Post Post { get; set; } 
    public virtual User User { get; set; } 
} 
+0

ルーキー、助けてくれてありがとう。私は、あなたのコードを追加し、hteユーザーとポストテーブルを少し変更し、まだ正しく見えません。 – qinking126

0

ルーキー、ご協力いただきありがとうございます。

テーブルを追加した後、私は public virtual IListのお気に入り{get;ユーザテーブルと投稿テーブルの両方に を設定します。それでもかなり正しいとは思わない。

  public class User : Entity 
      { 
       public User() { this.Posts = new List<Post>;} 
       public virtual string Name { get; set; } 
       public virtual IList<Post> Posts {get; set;} 
       public virtual IList<Favorite> Favorites { get; set;} 
      } 

      public class Post : Entity 
      { 
       public Post() {} 
       public virtual string Title { get; set; } 
       public virtual User User { get; set; } 
       public virtual IList<Favorite> Favorites { get; set;} 
      } 

      public class Favorite : Entity 
      { 
       public virtual Post Post { get; set; } 
       public virtual User User { get; set; } 
      } 
+0

私はFavortitesのリストを追加しません。私は多対多の関係を2対1の団体として扱います。私の意見では、これは扱いが簡単です。を見て:http://stackoverflow.com/questions/3694632/automapper-bestpractice-of-mapping-a-many-to-many-association-into-a-flat-obje/3704643#3704643 – Rookian

関連する問題