2

我已经创建了一个带有代码优先和 DbContext 的数据库。

但是,这与新 MVC 4 站点上的安全模型数据库分开。

我的问题是如何将现有数据库与安全模型结合起来,或者出于正当理由将它们分开

例如这是最好的解决方案 http://blog.spontaneouspublicity.com/include-asp-net-simple-membership-tables-as-part-of-your-entity-framework-model

当我第一次运行应用程序时,这将重新创建安全模型和角色。

或者有没有其他方法可以做到这一点。

4

1 回答 1

1

出于这个原因,我喜欢新的 MVC 和 Simplemembership Provider。您可以很容易地将您的模型与 asp.net 帐户模型结合起来。

当您使用默认 Internet 模板时,它会创建一个名为 UsersContext 的上下文。要执行一些简单的操作,例如向 UserProfile 对象添加其他字段以在数据库中进行跟踪,您需要做 3 件简单的事情。

  1. 将属性添加到模型(如果您使用默认模板,则在帐户模型中)
  2. 在帐户控制器上的注册操作中,添加新字段 IE:

    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            var db = new UsersContext();
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { FirstName = model.FirstName, LastName = model.LastName, Address = model.Address, Company = model.Company, Phone = model.Phone, Country = model.Country, City = model.City, State = model.State, Zip = model.Zip });            
                WebSecurity.Login(model.UserName, model.Password);
    
                return RedirectToAction("Index", "Dashboard");
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }
    
        // If we got this far, something failed, redisplay form
        return View(model);
    }
    

注意 new 关键字,我从传递的模型中获取值并将它们与模型匹配。(模型绑定可能会也可能不会在这里工作,但我还没有测试过)

3)更改注册视图和模型以传递所需的所有信息

当这第一次完美无缺且没有奇怪错误时,我几乎哭了。

祝你好运

于 2013-01-03T20:45:14.510 回答