2013-08-19 23 views
4

我目前正在研究一個事件日曆網站,並且在ASP.NET中我仍然是一個新手。我正在使用MVC4框架,以及MVC4模板附帶的EntityFramework(CodeFirst)和SimpleMembershipProvider。我也在使用遷移 - 如果這是來自任何興趣。MVC代碼優先:自己的模型和SimpleMembership用戶之間的一對多關係

我已經走到這一步,

我目前有兩個型號,一個一個一對多的關係,這只是正常工作:

_Events.cs(不得不將它命名這樣一來,因爲事件被保留)

public class _Event 
{ 
    public int _EventId { get; set; } 
    public string Name { get; set; } 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 

    public virtual List<Comment> comments { get; set; } 
} 

Comment.cs

public class Comment 
{ 
    public int CommentId { get; set; } 
    public string Text { get; set; } 

    public int _EventId { get; set; } 
    public virtual _Event _Event { get; set; } 
} 

問題

現在,我想補充註釋,並從會員制模式的用戶之間的另外一個一對多的關係,但似乎無法弄清楚如何做到這一點。

我希望實現的目標是,我可以列出每個事件的提交內容並打印出每條評論的用戶信息。我嘗試了幾件事情,但無法完成它的工作。我的最後一次嘗試如下所示:

public class Comment 
{ 
    // snip - see above 

    public virtual UserProfile User { get; set; } 
} 

非常感謝您提前給予任何幫助。

+1

如果是這種情況,您是否還需要將'UserId'存儲在註釋中?另外,'_Event'並不是一個很好的類名,我會考慮將它改爲更具體的。 – James

+0

SimpleMembership僅綁定到現有模型,不爲您創建表。因此,像平常一樣創建UserProfile(與關係),然後確保它與'Id'和'UserName'列綁定到'Table'。 –

+0

您是否在項目中使用Microsoft的默認成員資格提供程序?如果是,您需要爲您的項目實施成員資格提供者,因爲模型之間存在關係。 Microsoft會員表將存儲在不同的地方,您無法在它們之間導航。你使用_EventId的目的是什麼? –

回答

2

您需要在評論中包含UserId。

public class Comment 
{ 
    // snip - see above 

    public int UserId {get; set;} 
    public virtual UserProfile User { get; set; } 
} 

您還需要設置您的評論和您的用戶之間的關係,所以在您的帳戶控制器中有這樣的事情。

public class UserProfile 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 
     public string UserName { get; set; } 
     public virtual ICollection<Comment> Comments { get; set; } 
    } 
+0

謝謝,這有幫助。也感謝@Brad Christie提供了一個非常熟悉的解決方案。在旁註中,我必須將[InitializeSimpleMembership]添加到我的控制器中,以使其全部工作。 – sfey

1

在ASP.net MVC項目,如果你想使用默認的Microsoft成員資格提供,,你需要實現會員制樣作用提供商將您創建的模型和會員系統之間的關係和導航等等功能主義。 Microsoft在項目中的單獨位置(如App_Data文件夾中的數據庫)存儲用戶相關信息。

所以,你需要存儲其他車型微軟存儲的地方,直接與微軟職能的工作,並設置連接字符串爲此OR實施Microsoft成員在相關數據庫中存儲的用戶信息這樣NUGET Package實現在codefirst成員資格提供C#。您可以安裝此軟件包並學習編寫您自己的會員供應商。通過搜索「MVC或aspnet會員提供商的自定義會員提供商」可以找到更多幫助。

+0

謝謝你的解決方案。我將再次仔細研究這一點。現在@Xaxum的解決方案做了訣竅。 – sfey

相關問題