将一对多属性添加到身份模型

时间:2014-09-27 00:23:56

标签: c# asp.net-mvc entity-framework asp.net-identity

我刚刚开始学习MVC 5和实体框架以及使用身份模型。

我正在尝试向ApplicationUser模型添加其他属性,该模型是客户列表。基本上,用户可以在登录时附加许多客户。

我似乎至少在Register.cshtml页面上显示了客户列表,但我不确定这是否是最好的方法。

在我的RegisterViewModel.cs中,我添加了以下内容:

    [Display(Name = "Customer List")]
    public IEnumerable<Customer> Customers { get; set; }

然后在我的AccountController中,我添加了一个客户列表并将其传递给ViewModel:

    private GatewayContext gatewayContext = new GatewayContext();

    var customers = gatewayContext.Customers.ToList();
    var viewModel = new RegisterViewModel();
    viewModel.Customers = customers;
    return View(viewModel);

这是正确的做法吗?我担心的是,我已将gatewayContext创建为AccountController的属性,并且不确定这是否是正确的方法。

对不起,如果这个问题有点暧昧。如果有必要我可以改写!我只是想确保以正确的方式构建我的应用程序。

1 个答案:

答案 0 :(得分:0)

您正在使用RegisterViewModel更改进入正确的轨道。

但是,最好在控制器方法中使用DbContext

public ActionResult Register(...)
{
    List<Customer> customers;

    using (GatewayContext db = new GatewayContext())
    {
        customers = db.Customers.ToList();
    }

    var viewModel = new RegisterViewModel();
    viewModel.Customers = customers;
    return View(viewModel);
}

这里的想法是尽快使用和处理上下文。这有助于更快地将Sql Server连接返回到连接池,这意味着更少等待连接以用于其他同时请求。