0

ユーザーと投稿されたコメントが存在する MVC4 シンプルな Web アプリケーションで、オブジェクト リレーショナル マッピングを理解するのに少し問題があります。1 人のユーザーが多くのコメントを持っている必要があります。だから私は自分のUsersContextクラスに追加しましたpublic DbSet<UserWork> UserComments { get; set; }

public class UsersContext : DbContext
{
    public UsersContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
    public DbSet<UserWork> UserComments { get; set; }
}

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public int? UserComId { get; set; }
    [ForeignKey("UserComId")]
    public virtual UserComment UserComLog { get; set; }        
}
public class UserComment 
{
    [Key]
    public int UserComId{ get; set; }
    public int UserId { get; set; }        
    public string Comments{ get; set; }
    public DateTime postDate{get;set}
}

私は今、毎日投稿されたすべてのコメントがどのように保存され、後で次のようなクエリを作成できるかを理解することに行き詰まっていますSELECT * FROM UserComment Inner join UserProfile ON UserComment.UserId=UserProfile.UserId WHERE postDate BETWEEN (...) AND (...)

4

1 に答える 1

1

Code First Migrations を使用していると仮定しています。

UserProfileユーザーが複数のコメントを持てるようにするには、クラスを少し編集する必要があるようです。UserComLogコレクションを作成する必要があります。お気に入り:

public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual ICollection<UserComment> UserComLog { get; set; }        
}

これで、複数のコメントを持つユーザーができます。次に、UsersContextEntity Framework が作成したデータベース テーブルにアクセスできます。データ コンテキストを使用して Linq ステートメントを記述し、データにアクセスするだけです。

var context = new UsersContext();
var comments = context.UserComments.Where(d => d.postDate > new DateTime(2013,3,12) && d.postDate < new DateTime(2013,2,12) && d.UserId == userId);

commentsループにIQueryable<UserComment>渡してページに表示したり、必要に応じてさらにフィルタリングしたりできます。

于 2013-03-12T19:26:51.997 に答える