2013-03-12 44 views
0

在MVC4簡單的Web應用程序中有一些用戶及其發佈的註釋,我很難理解對象關係映射。 一個用戶必須有很多評論。所以,我在UsersContext類添加public DbSet<UserWork> UserComments { get; set; }ORM代碼優先 - 在設計期間修復

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 (...)

+0

該模型是否生成,或者您是否創建了類?你在使用EF Code First嗎?通常,你的'UserProfile'上會有'public virtual ICollection UserComments'屬性。 – Floremin 2013-03-12 19:21:43

回答

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; }   
} 

因此,您將有一個用戶有多個評論。然後,通過UsersContext,您可以訪問實體框架爲您創建的數據庫表。您只需使用數據上下文編寫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>然後您可以進入一個循環,如果你想在頁面上顯示,或過濾進一步。