我昨天安装了Visual Studio 2012(RTM,通过mytt DreamSpark帐户)并创建了一个演示MVC站点(使用.NET 4.0,因为我希望它在Azure上得到支持)。
我已开始调查该项目,除了使用外部服务(Facebook,Twitter,Windows Live和Google)的内置选项外,我发现整个会员模式已经更改:
新结构包含4个表(UserProfile是第一个代码的approch Entity Framework表)。 请注意,尽管表格前缀是“webpages_”,但它是一个合适的MVC 4站点。
我打开了AccountModels.cs文件,看到它也被更改了:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;
namespace MyGuestbook.Models
{
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
public class RegisterExternalLoginModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
public string ExternalLoginData { get; set; }
}
public class LocalPasswordModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
public class LoginModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
public class ExternalLogin
{
public string Provider { get; set; }
public string ProviderDisplayName { get; set; }
public string ProviderUserId { get; set; }
}
}
所以我想问: - 这是新用户结构(由asp_regsql.exe生成)还是特定于模板的结构? - 有人有关于新结构以及如何与其结合的任何文档吗? - 是否有人知道如何将具有旧结构的“旧”项目(例如MVC 3项目)迁移到新项目?
谢谢! :)
答案 0 :(得分:1)
我找到了一些回答我问题的文章。
修改强> 的
为什么突然改变:
由于Microsoft已更改默认的ASP.NET MVC 4模板,因此已进行了更改。
提供默认帐户管理的标准“Internet应用程序”模板已更改,现在使用WebMatrix 2帮助程序。
AccountController已被完全重写,以便使用支持第三方集成的SimpleMembership
类,并使我们能够使用实体框架代码优先方法。
旧会员提供者的使用
只要我读过,因为使用SimpleMembership
的{{1}}类不能使用默认的通用提供程序,必须使用内置提供程序或创建ExtendedMembershipProvider
自定义提供程序。
可在此处找到更多信息: Implementing membership providers using the new ASP.NET WebForms and ASP.NET MVC 4 template
干杯!