2010-10-12 110 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