MVC模型混乱

时间:2010-10-12 15:22:01

标签: sql-server asp.net-mvc

当我们在多个表之间存在关系时,我对模型感到困惑。以前,我使用SQL的视图或存储过程来操作数据,但现在我使用实体框架让我的模型看起来很混乱?

我有UsersUserImagesUserRoles的表格。

UserImagesUserRoles指的是来自UserID表的Users。我不确定我的模型应该如何。在显示数据时,我通常通过连接这两个表来使用在SQL Server中创建的视图。编辑或创建用户时,我会更新这3个表。

在这种情况下,不确定我的模型应该是什么样的?我是否创建SQL Server视图并将其添加到edmx?或者在EDMX中单独添加3个表,并在用户模型中为其他2个表创建自定义属性?

[HttpPost]         public ActionResult Create(UserFormViewModel UserView)           {

        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 个答案:

答案 0 :(得分:1)

User类应该包含角色和图像列表。这些表应该由UserId相互拥有外键。从表中生成模型时,选择您希望Entity Framework使用的所有表。在这种情况下,用户模型应自动拥有UserRoles和UserImages列表。适当更改名称。 添加或更改角色或图像时,您应该获取用户并更新或将其添加到正确的列表中。 我就是这样做的。在这种情况下,您的用户是聚合根。看看你感兴趣的DDD。