【问题标题】:MVC Model ConfusionMVC 模型混淆
【发布时间】:2010-10-12 15:22:01
【问题描述】:

当我们在多个表之间存在关系时,我对模型感到困惑。以前,我使用 SQL 的视图或存储过程来操作数据,但现在我使用 Entity Framework 很困惑我的模型应该是什么样子?

我有一张桌子供UsersUserImagesUserRoles使用。

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

不确定在这种情况下我的模型应该是什么样子?我是否创建 SQL 服务器视图并将其添加到 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");
    }
}

我不确定我应该如何在此处准确处理添加角色列表和图像。

【问题讨论】:

    标签: sql-server asp.net-mvc


    【解决方案1】:

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

    【讨论】:

    • 我也会这样做。基本上,实体框架是一个 ORM,而 ORM 让您可以处理您的模型。您将 User、UserIMage 和 UserRole 作为您的域对象。您的用户与将包含在 User 对象中的 Image 和 Role 具有一对多的关系。 HTH。
    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多