2013-03-07 87 views
0

我是MVC編程新手。在正常的OOP中,我有我的課程,我只需啓動並加載數據庫中的數據。在MVC中,我們有模塊,如何從中加載記錄?如何初始化MVC模塊?

這是我目前的類型UserAcount代碼:

[Table("UserAccount")] 
public class UserAccount { 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int ID { get; set; } 
    public string userName { get; set; } 
    public string email { get; set; } 
    public int companyID { get; set; } 
} 

說我有名字「爲testUser」的用戶,我怎麼初始化這個紀錄並獲得它的信息?我該怎麼做:

UserAccount user = new UserAccount("tesetUser"); 

如何和在哪裏shoulud我使用這個?

user = user.SingleOrDefault(u => u.userName.ToLower() == User.Identity.Name.ToLower()); 

回答

1

您需要詳細閱讀Entity Framework。這是MVC使用的默認ORM。簡單地說:

  1. 如果你沒有一個項目範圍內,但是,創建一個:

    public class MyProjectContext : DbContext 
    { 
        public MyProjectContext() 
         : base("name=ConnectionStringNameHere") 
        { 
        } 
    } 
    
  2. 您的模型添加到您的項目背景:

    public class MyProjectContext : DbContext 
    { 
        ... 
    
        public DbSet<SomeModel> SomeModels { get; set; } 
        public DbSet<SomeOtherModel> SomeOtherModels { get; set; } 
        # etc. 
    } 
    
  3. 更新您的數據庫使用包管理器控制檯(TOOLS>庫包管理器>包管理器控制檯):

    > update-database 
    

(打打字,經過ENTER)

現在,使用您的上下文中的控制器:

public class MyAwesomeController : Controller 
{ 
    private MyProjectContext db = new MyProjectContext(); 

    public ActionResult Index() 
    { 
     var someModels = db.SomeModels; 
     return View(someModels); 
    } 

    public ActionResult GetSomeModel(int id) 
    { 
     var someModel = db.SomeModels.Find(id); 
     return View(someModel); 
    } 

    # other actions 
} 
+0

這非常有幫助,非常感謝! – Bill 2013-03-07 20:41:04

0

在最簡單的情況下,你應該這樣做的邏輯在你的控制器,將數據傳遞給視圖。然而,MVC是用於關注用戶界面的分離,所以理論上你應該在你的控制器調用的域圖層中執行此操作。

Here is a decent article from Jeff Atwood,但我不同意控制器是應用程序的大腦。它更多的是UI的大腦......但這取決於你的代碼有多複雜。如果它非常簡單,不要創建域圖層

0

在MVC模型中,控制器負責處理HTTP請求。

通常,您會在控制器操作中加載實體(例如UserAccount)。

如果要編輯/更新實體,通常需要將相關字段映射到反映UserAccount的模型。建議使用單獨的模型,因爲UI的需求通常與實體模型的需求有所不同。爲每個關注點分別分類可以避免污染實體模型以滿足視圖的需求。

+0

究竟是如何做你:「加載實體(例如UserAccount)在一個控制器動作「?具體來說,在我的情況下,UserAccount模塊? – Bill 2013-03-07 19:09:47