2010-10-12 100 views
0

當我們有多個表之間的關係時,我對模型感到困惑。以前,我使用SQL的視圖或存儲過程來操作數據,但現在我正在使用Entity Framework,因此我的模型看起來應該如何混淆?MVC模型混淆

我有一張表Users, UserImages, UserRoles

UserImagesUserRoles指的是UserIDUsers表。我不知道我的模型應該如何。在顯示數據時,我通常使用通過連接這兩個表在SQL Server中創建的視圖。當用戶被編輯或創建時,我更新這3個表格。

不確定在這種情況下我的模型應該是什麼樣子?我是否創建一個SQL服務器視圖並將其添加到edmx?或者在EDMX中分別添加3個表格,並在用戶模型中爲其他2個表格創建自定義屬性?

[HttpPost] 公衆的ActionResult創建(UserFormViewModel用戶視圖) {

 User user = UserView.User; 

     try { 

      if (ModelState.IsValid) { 
       repository.AddUser(user); 
       repository.Save(); 

       return View(new UserFormViewModel(user)); 
      } else { 
       return View(new UserFormViewModel(user)); 
      } 
     } catch (Exception ex) { 
      ModelState.AddModelError("Error", ex.Message); 
      return View(new UserFormViewModel(user)); 
     } 
    } 





public class UserFormViewModel { 

    UucsrRepository repository = new UucsrRepository(); 

    public User User { get; private set; } 
    public SelectList States { get; private set; } 
    public SelectList Genders { get; private set; } 
    public SelectList RolesLists { get; private set; } 
    public SelectList SelectedRolesLists{ get; private set; } 

    public UserFormViewModel(User contact) { 
     User = contact; 
     States = new SelectList(repository.GetAllStates() ,"ShortName","Name"); 
     Genders = new SelectList(repository.GetAllGenders(), "Gender", "Description"); 
     RolesLists = new SelectList(repository.GetAllRolesLists(), "Id", "Name"); 
    } 
} 

我不知道我應該怎樣準確地處理添加角色列表和圖片在這裏。

回答

1

User類應該有一個角色和圖像列表。這些表應該由UserId具有彼此的外鍵。從表中生成模型時,選擇您希望Entity Framework使用的所有表。用戶模型在這種情況下應該自動具有UserRoles和UserImages的列表。適當地更改名稱。 添加或更改角色或圖像時,您應該獲取用戶並更新或將其添加到正確的列表中。 我就是這麼做的。在這種情況下,您的用戶是一個聚合根。看看你感興趣的DDD。

+0

我會做同樣的事情。基本上實體框架是一個ORM,ORM可以讓你處理你的模型。你有User,UserIMage和UserRole作爲你的域對象。用戶與用戶對象包含的圖像和角色有一對多的關係。 HTH。 – Pradeep 2010-10-12 16:00:56

+0

我在這裏添加了我的代碼,以防萬一您可以看一下。 – Mathew 2010-10-12 17:20:47