Как заполнить таблицы пользовательских свойств при использовании SimpleMembership в ASP.NET MVC 4

Я начал работать над проектом MVC, в котором есть 3 типа пользователей (клиенты, поставщики услуг и администраторы) с разными специфическими свойствами. Я хотел бы расширить реализацию SimpleMembership по умолчанию в шаблоне интернет-приложения веб-приложения ASP.NET MVC в Visual Studio 2012.

У меня есть класс Customer (не уверен в ключевом атрибуте и отношениях)

public class Customer
{
    [Key]
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Phone { get; set; }

    public virtual UserProfile UserProfile { get; set; }
}

и иметь таблицу Customer в SQL Server Express:

CREATE TABLE [dbo].[Customer]
(
    [UserName] NVARCHAR(MAX) NOT NULL, 
    [FirstName] NVARCHAR(50) NOT NULL, 
    [LastName] NVARCHAR(50) NOT NULL, 
    [Phone] NVARCHAR(50) NULL
)

Контекст Entity Framework:

public class UsersContext : DbContext
{
    public UsersContext() : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }

    public DbSet<Customer> Customers { get; set; }
}

Какой код я должен добавить ниже, чтобы заполнить таблицу Customer вместе с таблицей UserProfile?

// Attempt to register the user
try
{
     WebSecurity.CreateUserAndAccount(model.UserName, model.Password);

     WebSecurity.Login(model.UserName, model.Password);
     return RedirectToAction("Index", "Home");
 }

заранее спасибо


person burakk    schedule 11.03.2013    source источник


Ответы (1)


Я удалил строку из класса Customer:

public virtual UserProfile UserProfile { get; set; }

Класс клиента теперь становится:

public class Customer
{
    [Key]
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Phone { get; set; }
}

и добавил следующий код в метод Register объекта AccountController:

try
{
     WebSecurity.CreateUserAndAccount(model.UserName, model.Password);

     Customer cust = new Customer
     {
         UserName = model.UserName,
         FirstName = "Dikembe",
         LastName = "Mutombo",
         Phone = model.Phone
     };                  
     UsersContext context = new UsersContext();
     context.Customer.Add(cust);
     context.SaveChanges();

     WebSecurity.Login(model.UserName, model.Password);
     return RedirectToAction("Index", "Home");
}
person burakk    schedule 13.03.2013