大きなユーザーテーブル(高度なユーザープロファイル)を作成し、データベースコンテキストにユーザーのデータを保存したいと思います。したがって、プロジェクトで2つのDbContextを使用したくありません。ユーザーがサイトに登録すると、データ(ユーザー名、パスワードなど)に自分のユーザーテーブルが保存されます。私のクラスは次のようなものです。
public class ModelBase
{
public int Id { get; set; }
public DateTime CreateDate { get; set; }
public DateTime LastUpdateDate { get; set; }
}
public class User : ModelBase
{
public string UserName { get; set; }
public string Password{ get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public DateTime BirthDate { get; set; }
public string Specialty { get; set; }
}
public class News : ModelBase
{
public int UserId { get; set; }
public string Title { get; set; }
...
}
....
コンテキストはそうです:
public class MyDBContext : DbContext
{
public MyDBContext()
{
Database.SetInitializer<MyDBContext>(new MyDBContextInitializer());
}
public DbSet<User> UserSet { get; set; }
public DbSet<News> NewsSet { get; set; }
public DbSet<Project> ProjectSet { get; set; }
public DbSet<Section> SectionSet { get; set; }
....
}
class MyDBContextInitializer : DropCreateDatabaseIfModelChanges<MyDBContext>
{
protected override void Seed(MyDBContext context)
{
base.Seed(context);
}
}
DbContext名を私のものに置き換え、デフォルトの SimpleMembershipInitializerクラスの接続名を次のように変更しました。
....
Database.SetInitializer<MyDBContext>(null);
try
{
using (var context = new MyDBContext())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
WebSecurity.InitializeDatabaseConnection("MyDBContextConnection", "User", "Id", "UserName", autoCreateTables: true);
....
最後に 、ユーザークラスに適したRegisterModelとWebSecurity.CreateUserAndAccount()を変更しました。しかし、それは機能しません。 自分のユーザーテーブルを使用してサイトに登録するにはどうすればよいですか?