1

我正在尝试将自定义 UserProfile 类存储在 ASP.NET MVC4 Internet 应用程序中。UserProfile 类名为“Usuario”,如下所示:

[Table("Usuarios")]
public class Usuario
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    [EmailAddress]
    public string Correo { get; set; }
    public string Twitter { get; set; }
    public string Perfil { get; set; }
    public string LinkedIn { get; set; }
    public List<Evento> Ponencias { get; set; }
    public List<Evento> Asistencias { get; set; }
    public List<Evento> EventosCreados { get; set; }
}

我还创建了一个名为 WeventioDb 的 Context 类,如下所示:

 public class WeventioDb : DbContext
{
    public DbSet<Usuario> Usuarios { get; set; }
    public DbSet<Evento> Eventos { get; set; }
    public DbSet<Comentario> Comentarios { get; set; }
    public DbSet<Ubicacion> Ubicaciones { get; set; }
}

问题是,当用户注册时,它不会存储到“Usuario”表中,而是存储在“Usuario”中(注意末尾缺少的 S),并且只有一个 UserName 属性和 UserId。我希望在用户注册时将其存储到“Usuarios”表中。

我的注册操作如下所示:

 public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                WebSecurity.Login(model.UserName, model.Password);
                return RedirectToAction("Index", "Home");
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }

        return View(model);
    }

关于如何创建用户并将其存储到“Usuarios”表中并将其与会员资格一起使用的任何想法?

Upadte:这就是我最初的迁移(表创建)的样子,它正在创建正确的表“Usuario”,但是当我转到 .mdf 文件时,“Usuario”表是空的,所有注册用户都在“Usuario”中" 如前所述:

public partial class Initial : DbMigration
{
    public override void Up()
    {
        CreateTable(
            "dbo.Usuarios",
            c => new
                {
                    UserId = c.Int(nullable: false, identity: true),
                    UserName = c.String(),
                    Correo = c.String(),
                    Twitter = c.String(),
                    Perfil = c.String(),
                    LinkedIn = c.String(),
                    Evento_Id = c.Int(),
                    Evento_Id1 = c.Int(),
                })
            .PrimaryKey(t => t.UserId)
            .ForeignKey("dbo.Eventos", t => t.Evento_Id)
            .ForeignKey("dbo.Eventos", t => t.Evento_Id1)
            .Index(t => t.Evento_Id)
            .Index(t => t.Evento_Id1);

        CreateTable(
            "dbo.Eventos",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Fecha = c.DateTime(nullable: false),
                    Precio = c.Double(nullable: false),
                    Descripcion = c.String(),
                    Schema = c.String(),
                    Sector = c.String(),
                    Banner = c.String(),
                    Imagen = c.String(),
                    Twitter = c.String(),
                    Hashtag = c.String(),
                    Programa = c.String(),
                    Organizador_UserId = c.Int(),
                    Rating_ID = c.Int(),
                    Sitio_Id = c.Int(),
                    Usuario_UserId = c.Int(),
                    Usuario_UserId1 = c.Int(),
                    Usuario_UserId2 = c.Int(),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.Usuarios", t => t.Organizador_UserId)
            .ForeignKey("dbo.Ratings", t => t.Rating_ID)
            .ForeignKey("dbo.Ubicacions", t => t.Sitio_Id)
            .ForeignKey("dbo.Usuarios", t => t.Usuario_UserId)
            .ForeignKey("dbo.Usuarios", t => t.Usuario_UserId1)
            .ForeignKey("dbo.Usuarios", t => t.Usuario_UserId2)
            .Index(t => t.Organizador_UserId)
            .Index(t => t.Rating_ID)
            .Index(t => t.Sitio_Id)
            .Index(t => t.Usuario_UserId)
            .Index(t => t.Usuario_UserId1)
            .Index(t => t.Usuario_UserId2);

        CreateTable(
            "dbo.Ratings",
            c => new
                {
                    ID = c.Int(nullable: false, identity: true),
                    Texto = c.String(),
                    Puntaje = c.Int(nullable: false),
                    Fecha = c.DateTime(nullable: false),
                    Autor_UserId = c.Int(),
                })
            .PrimaryKey(t => t.ID)
            .ForeignKey("dbo.Usuarios", t => t.Autor_UserId)
            .Index(t => t.Autor_UserId);

        CreateTable(
            "dbo.Ubicacions",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Latitud = c.Double(nullable: false),
                    Longitud = c.Double(nullable: false),
                    Direccion = c.String(),
                    Nombre = c.String(),
                    Twitter = c.String(),
                    CodigoPostal = c.Int(nullable: false),
                    Ciudad = c.String(),
                    Estado = c.String(),
                })
            .PrimaryKey(t => t.Id);

        CreateTable(
            "dbo.Comentarios",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Texto = c.String(),
                    Fecha = c.DateTime(nullable: false),
                    Autor_UserId = c.Int(),
                    Evento_Id = c.Int(),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.Usuarios", t => t.Autor_UserId)
            .ForeignKey("dbo.Eventos", t => t.Evento_Id)
            .Index(t => t.Autor_UserId)
            .Index(t => t.Evento_Id);

    }

    public override void Down()
    {
        DropIndex("dbo.Comentarios", new[] { "Evento_Id" });
        DropIndex("dbo.Comentarios", new[] { "Autor_UserId" });
        DropIndex("dbo.Ratings", new[] { "Autor_UserId" });
        DropIndex("dbo.Eventos", new[] { "Usuario_UserId2" });
        DropIndex("dbo.Eventos", new[] { "Usuario_UserId1" });
        DropIndex("dbo.Eventos", new[] { "Usuario_UserId" });
        DropIndex("dbo.Eventos", new[] { "Sitio_Id" });
        DropIndex("dbo.Eventos", new[] { "Rating_ID" });
        DropIndex("dbo.Eventos", new[] { "Organizador_UserId" });
        DropIndex("dbo.Usuarios", new[] { "Evento_Id1" });
        DropIndex("dbo.Usuarios", new[] { "Evento_Id" });
        DropForeignKey("dbo.Comentarios", "Evento_Id", "dbo.Eventos");
        DropForeignKey("dbo.Comentarios", "Autor_UserId", "dbo.Usuarios");
        DropForeignKey("dbo.Ratings", "Autor_UserId", "dbo.Usuarios");
        DropForeignKey("dbo.Eventos", "Usuario_UserId2", "dbo.Usuarios");
        DropForeignKey("dbo.Eventos", "Usuario_UserId1", "dbo.Usuarios");
        DropForeignKey("dbo.Eventos", "Usuario_UserId", "dbo.Usuarios");
        DropForeignKey("dbo.Eventos", "Sitio_Id", "dbo.Ubicacions");
        DropForeignKey("dbo.Eventos", "Rating_ID", "dbo.Ratings");
        DropForeignKey("dbo.Eventos", "Organizador_UserId", "dbo.Usuarios");
        DropForeignKey("dbo.Usuarios", "Evento_Id1", "dbo.Eventos");
        DropForeignKey("dbo.Usuarios", "Evento_Id", "dbo.Eventos");
        DropTable("dbo.Comentarios");
        DropTable("dbo.Ubicacions");
        DropTable("dbo.Ratings");
        DropTable("dbo.Eventos");
        DropTable("dbo.Usuarios");
    }
}
4

1 回答 1

0

问题出在 InitializeSimpleMembership 类上,因此删除了 [InitializeSimpleMembership] 注释和类并添加到 Global.asax.cs 中:

 var migrator = new DbMigrator(new Configuration());
        migrator.Update();

        if (!WebSecurity.Initialized)
        {
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
        }
于 2013-02-17T16:48:11.253 回答