我刚刚开始学习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
的属性,并且不确定这是否是正确的方法。
对不起,如果这个问题有点暧昧。如果有必要我可以改写!我只是想确保以正确的方式构建我的应用程序。
答案 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连接返回到连接池,这意味着更少等待连接以用于其他同时请求。